将静态库链接到我在 Visual Studio 2010 上的项目

Linking a static library to my project on Visual Studio 2010

本文关键字:2010 Studio 项目 Visual 静态 链接      更新时间:2023-10-16

我想使用 oscpack (http://code.google.com/p/oscpack/) 作为我的项目的静态库,但当我尝试将其添加到示例中时,我收到链接错误,例如:

1>oscpackd.lib(UdpSocket.obj):错误LNK2019:未解析的外部符号__imp__socket@12函数"public: __thiscall UdpSocket::Implementation::Implementation(void)"(??0Implementation@UdpSocket@@QAE@XZ)

1>oscpackd.lib(UdpSocket.obj):错误LNK2019:未解析的外部符号__imp__closesocket@4函数"public: __thiscall UdpSocket::Implementation::~Implementation(void)"(??1Implementation@UdpSocket@@QAE@XZ)

基本上,我创建了一个用于构建oscpack.lib的解决方案,在项目中我添加了相应的.h和.cpp文件。

然后在示例解决方案中,我添加了我的 main.cpp然后我包括(属性>C/C++>附加包含目录)oscpack 库的文件夹,然后在链接器选项卡上我添加了库的文件夹位置和库的名称。

"解决方案资源管理器"窗口中右键单击项目,然后单击"属性">"链接器">"其他依赖项"输入>设置。 您必须添加 ws2_32.lib。

VS 项目模板负责告诉链接器链接最常见的 Windows 库。 像kernel32.lib一样,没有它你就无法编写Windows程序。 但不是winsock,不是每个程序都想要创建一个套接字。 这必须明确补充。

您可以从 MSDN 文章中找到这些类型的依赖项,例如 closesocket()。 它位于文章的底部。 标题位告诉您需要 #include 的内容,您做对了。 位告诉您需要告诉链接器链接的内容。 不是自动的,你必须自己照顾它。

已经有正确的答案 - 您需要指定要链接的 winsock 库。但这是我最喜欢的小项目方法: #pragma comment(lib, "ws2_32.lib")只需将其放在您的主中.cpp(注意:特定于 MSVC)

你是说你把库和main.cpp放到单独的解决方案中吗? 尝试将它们放入同一解决方案中,并相应地设置项目引用。

此外,请确保对正确的生成配置进行更改。 即,如果您在调试模式下构建,请确保已将库名称和头目录添加到调试配置中。