Visual c++ 使用winsocks的库:未解析的外部符号
我创建了一个使用winsocks的库,我使用以下命令编译它:Visual c++ 使用winsocks的库:未解析的外部符号,visual-c++,static-libraries,winsock,Visual C++,Static Libraries,Winsock,我创建了一个使用winsocks的库,我使用以下命令编译它: cl /c myLib.c /link ws2_32.lib lib myLib.obj 因此获得myLib.lib,一切都正常 现在,我编写了一个测试程序test.c,其中我做了: #include "myLib.h" //... i use some functions // 我用 cl test.c /link myLib.lib 但我得到: myLib.lib(myLib.obj):错误LNK2001:未解析的外部符号
cl /c myLib.c /link ws2_32.lib
lib myLib.obj
因此获得myLib.lib,一切都正常
现在,我编写了一个测试程序test.c,其中我做了:
#include "myLib.h"
//... i use some functions //
我用
cl test.c /link myLib.lib
但我得到:
myLib.lib(myLib.obj):错误LNK2001:未解析的外部符号\u imp\u connec
t@12
myLib.lib(myLib.obj):错误LNK2001:未解析的外部符号@
4.
myLib.lib(myLib.obj):错误LNK2001:未解析的外部符号\u imp\u inet\u a
ddr@4
myLib.lib(myLib.obj):错误LNK2001:未解析的外部符号\u imp\u套接字
@12
myLib.lib(myLib.obj):错误LNK2001:未解析的外部符号\u imp\u WSASta
rtup@8
myLib.lib(myLib.obj):错误LNK2001:未解析的外部符号\u imp\u WSACle
anup@0
logbus.lib(logbus.obj):错误LNK2001:未解析的外部符号\u imp\u关闭
ocket@4
test.exe:致命错误LNK1120:7个未解析的外部
编辑:
好的,如果我在ws2_32.lib中添加一个链接,它也可以工作。
无论如何,我不喜欢它:我在创建我的库时已经链接了这个库,所以我只想链接到myLib.lib…这可能吗?您可以尝试中的建议,基本上是在您自己的库中包含
ws2_32.lib
:
cl /c myLib.c /link ws2_32.lib
lib /out:myLib.lib myLib.obj ws2_32.lib
理论上,这将构成一个复合库。然而,问题是如果你发行myLib.lib
——我不确定这是否合法,因为你会包括受版权保护的代码
顺便说一句,但我把它包括在内,因为它非常有趣而且有点相关,Raymond Chen最近在上写了一系列文章。我解决了使用#pragma指令将Win32包含到myLib.lib中的问题