Tag: 连接器

MinGW链接器错误:winsock

我在Windows上使用MinGW编译器来编译我的C ++应用程序与套接字。 我的连接命令如下所示: g++.exe -Wall -Wno-long-long -pedantic -lwsock32 -o dist/Windows/piskvorky { there are a lot of object files } 我也试过了 g++.exe -Wall -Wno-long-long -pedantic -lws2_32 -o dist/Windows/piskvorky { there are a lot of object files } 但在这两种情况下,我得到这个错误: build/Windows/MinGW-Windows/src/utils/tcpunit.o:tcpunit.cpp:(.text+0x33): undefined reference to `closesocket@4' build/Windows/MinGW-Windows/src/utils/tcpunit.o:tcpunit.cpp:(.text+0xd0): undefined reference to `send@16' build/Windows/MinGW-Windows/src/utils/tcpunit.o:tcpunit.cpp:(.text+0x1ee): undefined reference to `recv@16' build/Windows/MinGW-Windows/src/utils/tcpdevice.o:tcpdevice.cpp:(.text+0x184): undefined reference […]

C ++链接是否足够聪明以避免链接未使用的库?

我完全不了解C ++链接器是如何工作的,而且我对它有一个具体的问题。 说我有以下几点: Utils.h namespace Utils { void func1(); void func2(); } Utils.cpp #include "some_huge_lib" // needed only by func2() namespace Utils { void func1() { /* do something */ } void func2() { /* make use of some functions defined in some_huge_lib */ } } main.cpp中 int main() { Utils::func1() } 我的目标是生成尽可能小的二进制文件。 我的问题是,将some_huge_lib将被包括在输出对象文件?

如何在Mac OS X上确定静态库(.a)的目标体系结构?

我有兴趣validation一个给定的iPhone静态库是为ARM还是Intel构build的。 这比任何事情都更好奇。 是否有某种Mac OS X或BSD特定的工具来做到这一点? 这篇文章在Linux中给出了一个例子。

链接c代码到c ++代码时,g ++链接顺序依赖关系

在今天之前,我一直认为在连接阶段把对象和库传给g ++的顺序是不重要的。 然后,今天,我试图从c ++代码链接到c代码。 我将所有的C头文件封装在一个extern“C”块中,但是链接器仍然有困难find我知道在C对象存档中的符号。 困惑,我创build了一个相对简单的例子来隔离链接错误,但令我惊讶的是,更简单的例子没有任何问题。 经过一些试验和错误之后,我发现通过模拟简单例子中使用的链接模式,我可以得到主代码链接OK。 该模式是目标代码第一,对象档案第二例如: g++ -o serverCpp serverCpp.o algoC.o libcrypto.a 任何人都可以阐明为什么这可能是这样的? 链接普通的c ++代码时,我从来没有见过这个问题。

错误LNK2019:无法parsing的外部符号_main在函数___tmainCRTStartup中引用

我不知道什么是错的..我找不到错误在哪里,注释掉实现也不能解决错误。 头文件 #ifndef MAIN_SAVITCH_SEQUENCE_H #define MAIN_SAVITCH_SEQUENCE_H #include <cstdlib> // Provides size_t namespace main_savitch_3 { class sequence { public: // TYPEDEFS and MEMBER CONSTANTS typedef double value_type; typedef std::size_t size_type; static const size_type CAPACITY = 30; // CONSTRUCTOR sequence( ); // MODIFICATION MEMBER FUNCTIONS void start( ); void advance( ); void insert(const value_type& entry); void attach(const […]

将静态库链接到其他静态库

我有一小段代码依赖于许多静态库(a_1-a_n)。 我想将这些代码打包在一个静态库中,并将其提供给其他人。 我的静态库,让它叫X,编译好。 我创build了一个使用X函数的简单示例程序,但是当我尝试将它链接到X时,出现了许多有关从库a_1 – a_n中丢失符号的错误。 有没有一种方法可以创build一个新的静态库,Y包含X和X所需的所有function(从a_1 – a_n中select的位),这样我就可以分发Y,让人们将它们的程序链接到? 更新: 我已经看过只是倾销所有与AR和一个超级图书馆,但是,最终包括了很多不需要的符号(所有.o文件大约700 MB,但是,一个静态链接的可执行文件是7 MB)。 有没有一种很好的方法来只包含实际需要的东西? 这看起来与如何将几个C / C ++库合并为一个密切相关? 。

C ++链接如何在实践中工作?

C ++链接如何在实践中工作? 我正在寻找的是关于链接如何发生的详细解释,而不是链接的命令 。 关于编译已经有一个类似的问题,这个问题没有太详细的说明: 编译/链接过程是如何工作的?