未解决的外部符号

Tom*_*omO 6 c++ linker unresolved-external

可能重复:
什么是未定义的引用/未解析的外部符号错误,如何解决?

我正在努力将大量的.h和.lib文件从本机C++包装到托管C++,最终用作C#中引用的.dll.

我已经链接了.lib文件,到目前为止一切顺利.在包装最新的.h文件时,当遇到链接错误的2个函数时,我遇到了麻烦:

error LNK2019: unresolved external symbol __imp__htonl@4 referenced in function
"public: void __thiscall Field::setCharacter(unsigned char,int)"
(?setCharacter@Field@@QAEXEH@Z) myutils.lib 
Run Code Online (Sandbox Code Playgroud)

myutils.lib在链接器选项中引用了,所以这不应该是问题.

奇怪的是,我在这个特定的.h文件中有大约20个函数,除了3个函数之外,所有其余函数都很好.

有任何想法吗?

Chr*_*her 5

缺少的符号是__imp__htonl@4htonl的C++错位名称,它是一个将长值从主机转换为网络顺序的函数.@ 4用于修改输入参数,是C++对重载函数的支持的一部分,允许链接器解析没有名称冲突的正确函数.

确保您链接到您引用此符号的网络库.据推测,你的包使用了这个符号的一些特殊定义,而不是它通常使用的MACRO.

  • 谢谢克里斯托弗.仔细观察后,__ imp__htonl是机器上已有的库的一部分.我simlpy补充说:"#pragma comment(lib,"Ws2_32.lib")"到包装器标题,它的工作原理! (8认同)