繁体   English   中英

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

[英]Linking a static library to my project on Visual Studio 2010

我想将 oscpack ( http://code.google.com/p/oscpack/ ) 用作我项目的 static 库,但是当我尝试将它添加到示例中时,出现链接错误,例如:

1>oscpackd.lib(UdpSocket.obj): error LNK2019: function 中引用的未解析的外部符号 __imp__socket@12 “public: __thiscall UdpSocket::Implementation::Implementation(void)” (??0Implementation@UdpSocket@@QAE@XZ)

1>oscpackd.lib(UdpSocket.obj): error LNK2019: function 中引用的未解析的外部符号 __imp__closesocket@4 "public: __thiscall UdpSocket::Implementation::~Implementation(void)" (??1Implementation@UdpSocket@@QAE@XZ )

...

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

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

在解决方案资源管理器 window 中右键单击您的项目,然后单击属性 > Linker > 输入 > 附加依赖项设置。 您必须添加 ws2_32.lib。

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

您可以从有关 closesocket() 的 MSDN 文章中找到此类依赖项。 它在文章的底部。 Header位告诉您#include 需要什么,您说对了。 位告诉您需要告诉 linker 链接什么。 不是自动的,你必须自己处理。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM