해결되지 않은 외부 심볼 오류 빌드 라이브러리에서 EXE 또는 DLL으로 전환합니다.

StackOverflow https://stackoverflow.com/questions/168232

  •  03-07-2019
  •  | 
  •  

문제

애플리케이션을 라이브러리로 구축하고 있지만 원하는 출력을 얻을 수 있도록 EXE를 생산하기 위해 전환했습니다. 내가하자마자 해결되지 않은 외부 기호에 대해 몇 가지 오류가 발생했습니다.

처음에 나는 참조중인 제 3 자 라이브러리로 설정된 경로가 없다고 생각했기 때문에 폴더를 내 경로 변수에 추가하여 포함, 참조 및 소스 파일에 추가하여 확인하기 만하면 나는 모든 길을 가졌다.

나는 여전히 오류를 얻는다 :

오류 LNK2019 : 해결되지 않은 외부 기호 "__declSpec (dllimport) public : static void __cdecl xercesc_2_8 :: xmlplatformutils :: 초기화 (char const * const, char const, class xercesc_2_8 :: panichandler * const, class xercesc_2_8 :: memorymanager * const, "bool)"(__imp_? 초기화@xmlplatformutils@xercesc_2_8 @@ saxqbd0qavpanichandler@2@qavmemorymanager@2@2@_n@z)는 "void __cdecl xsd :: cxx :: xml :: initialize (void)"(? xml) "(? @cxx@xsd @@ yaxxz)

내가 여기서 묻는 이유는 Visual Studio에서 라이브러리로 만들었을 때 이러한 오류를 얻지 못했지만 DLL과 EXE로서 그렇게하기 때문입니다.

아무도 생각이 있습니까?

도움이 되었습니까?

해결책

라이브러리를 구축하면 링커는 가져온 기호를 해결할 필요가 없습니다. 객체 파일과 라이브러리를 함께 연결하기 시작할 때만 발생합니다.

그렇기 때문에 실행 파일을 구축 할 때만 오류를보기 시작했습니다.

실제로 VC2008 (및 2005, 내가 잘 기억하는 경우)에서 프로젝트 속성 -> 링커 -> 입력 -> 추가 종속성을 사용하십시오. 필요한 라이브러리는 공간으로 분리되어야합니다 (홀수, 이봐?)

행운을 빕니다!

다른 팁

또한 특히 해당 라이브러리와 연결하려는 것을 지정해야합니다. 링크 경로는 단지 찾아야 할 데이터가 찾아야 할 것이 아니라 링커를 알려줍니다. 또한 해당 라이브러리 (XERCES?)와 연결하고 있음을 지정해야합니다.

불행히도, 나는 이것을 MSVC에서 지정하는 방법을 모르지만 아마도 '링커 옵션'아래에있을 것입니다.

@coppro가 말했듯이 해당 라이브러리와 연결하려는 것을 지정해야합니다. EXE 또는 DLL을 구축하면 링커가 실행되며 사용중인 모든 기능을 찾아야하지만 라이브러리를 구축하려면 사서가 실행되며 모든 기능 참조를 해결할 필요는 없습니다 (그러나시기는 없습니다. 당신은 그 lib를 exe에 사용하면, 당신은 다시해야합니다).

따라서 추가 라이브러리 경로에서 누락 된 함수 (xerces.lib?)를 정의하는 라이브러리를 프로젝트 옵션, 링커 옵션, 입력 및 나열하십시오. 추가 라이브러리 경로에서 위치를 추가해야 할 수도 있습니다.

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