문제

가능한 복제 :
정의되지 않은 참조/해결되지 않은 외부 심볼 오류 란 무엇이며 어떻게 수정합니까?

C#의 참조 .dll로 최종 사용을 위해 기본 C ++에서 관리 된 C ++로 많은 수의 .h 및 .lib 파일을 포장하려고합니다.

.lib 파일이 연결되어 있으며 지금까지 모든 것이 순조롭게 진행되었습니다. 최신 .h 파일을 줄이면 2 개의 함수가 링크 오류와 함께 돌아 왔을 때 SNAG를 쳤다.

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 

나는 언급했다 myutils.lib 링커 옵션에서 문제가되지 않아야합니다.

이상한 점은이 특정 .h 파일에 약 20 개의 기능이 있고 나머지는 3 가지 기능을 제외하고는 잘 연결되어 있다는 것입니다.

어떤 아이디어?

도움이 되었습니까?

해결책

누락 된 기호는입니다 __imp__htonl@4, HTONL의 C ++ Mangled 이름으로 긴 값을 호스트에서 네트워크 순서로 변환하는 함수입니다. @4는 입력 매개 변수를 조작하는 데 사용되며 링커가 이름 충돌없이 올바른 함수를 해결할 수 있도록 과부하 된 함수에 대한 C ++ 지원의 일부입니다.

이 기호를 참조하는 네트워크 라이브러리에 연결되어 있는지 확인하십시오. 아마도 패키지는 매크로 대신이 기호의 특별한 정의를 사용하고있을 것입니다.

다른 팁

서명이 일치합니까? 서명과 성별을 확인하십시오. 또한 기능이 감소하지 않도록하십시오.

라이브러리에 대해 편집 한 다음 링크하기 전에 라이브러리를 변경했을 때이 오류가 발생했습니다. 헤더가 라이브러리에서 제공 한 동일한 헤더인지 확인하십시오 (다른 아키텍처에서 복사하지 않음). 물론 WS2_32.lib (mingw/gcc의 경우 -lws2_32)와 연결하고 있는지 확인하십시오.

또한 GCC/MINGW를 사용하는 경우 다음을 살펴볼 수 있습니다. Mingw 링커 오류 : Winsock

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top