Stan Huang Ответов: 1

Как связать библиотеку, содержащую htonl, ntohl и ntohs в VC++ 2017?


У меня есть сообщение об ошибке типа

1>dsim.obj : error LNK2019: unresolved external symbol __imp__htonl@4 referenced in function "unsigned short __cdecl AddEthCard(unsigned int,unsigned char *,char *,struct pcap *)" (?AddEthCard@@YAGIPAEPADPAUpcap@@@Z)
1>dsim.obj : error LNK2019: unresolved external symbol __imp__ntohl@4 referenced in function "void __cdecl HandleIGMPMsg(struct ethcard *,struct pcap_pkthdr *,unsigned char *)" (?HandleIGMPMsg@@YAXPAUethcard@@PAUpcap_pkthdr@@PAE@Z)
1>dsim.obj : error LNK2019: unresolved external symbol __imp__ntohs@4 referenced in function "void __cdecl HandleARPMsg(struct ethcard *,unsigned char *)" (?HandleARPMsg@@YAXPAUethcard@@PAE@Z)


Я нашел сообщение об этом и знаю, что он должен связать ws2_32.lib. Вот что я сделал:
1. добавлен ws2_32.lib в "дополнительные зависимости" в Linker->Input.
2. Добавлен путь к папке, содержащей ws2_32.lib, в "дополнительные каталоги библиотек" в Linker->General.

Мои вопросы таковы:
1. Все, что я пропустил, чтобы сделать для добавления ws2_32 в.lib для урегулирования нерешенных вопросов?
2. Я нашел много папок, содержащих ws2_32 в.Либ, как показано ниже, который я должен выбрать? В настоящее время я выбрал
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64


C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\arm
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\arm64
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x64
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x86
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10586.0\um\arm
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10586.0\um\arm64
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10586.0\um\x64
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10586.0\um\x86
C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x64
C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x86
C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\arm
C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64
C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86
C:\Program Files (x86)\Windows Phone Kits\8.0\lib\ARM
C:\Program Files (x86)\Windows Phone Kits\8.0\lib\x86


Что я уже пробовал:

Я пробовал способы, которые нашел в сетях, но проблема остается.

1 Ответов

Рейтинг:
11

Stan Huang

Я изменил каталог библиотеки с

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64
к
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib
, все такие виды ошибок связывания исчезли.