2015-02-04 12 views
1

이상한 링커 오류가있어서 곧바로 수정할 수 없습니다. 이 프로젝트는 사실 우리가 사용하는 리눅스 시스템의 포트입니다. 따라서 Windows 이전의 모든 것이 제대로 작동하고 있음을 알 수 있습니다.정적 라이브러리에서 정의되지 않은 심볼이지만 동일한 VS 솔루션에있을 때 존재합니다.

VS2013 (잘 컴파일)을 사용하여 정적 라이브러리로 FTGL (OpenGL 글꼴 라이브러리)을 컴파일 중이며 DLL에 정적 라이브러리를 사용하고 있습니다. (모두 디버그 빌드 지금까지이 정적 라이브러리와 별도 VS 솔루션 내 DLL을 컴파일 된

Error 1 error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall FTPoint::FTPoint(void)" ([email protected]@[email protected]) referenced in function "public: virtual void __thiscall FPSCounter::draw(class Projector const *)" ([email protected]@@[email protected]@@Z) E:\Desktop\libWCLVS\fpsCounter\fpsCounter.obj fpsCounter 

Error 2 error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall FTPoint::FTPoint(double,double,double)" ([email protected]@[email protected]@Z) referenced in function "public: virtual void __thiscall FPSCounter::draw(class Projector const *)" ([email protected]@@[email protected]@@Z) E:\Desktop\libWCLVS\fpsCounter\fpsCounter.obj fpsCounter 

"dumpbin.exe /symbols" on the FTGL static lib shows the following (amongst the rest): 

1E5 00000000 SECT10 notype() External  | [email protected]@[email protected] (public: __thiscall FTPoint::FTPoint(void)) 

1E6 00000000 SECTE notype() External  | [email protected]@[email protected]@Z (public: __thiscall FTPoint::FTPoint(double,double,double)) 

: 그러나, 나는 거기, 내가 말할 수있는 것과있는 문자를 찾을 수 없다는 링커 오류를 얻을 수). 기존 정적 라이브러리 VS 프로젝트를 내 DLL 솔루션으로 가져오고 프로젝트의 Common Properties -> References을 통해 DLL에 대한 참조를 만들면 DLL이 컴파일되고 링크되며 디버그 빌드로도 잘 실행됩니다. 이것은 다른 솔루션에서 동일한 프로젝트를 사용하고 있기 때문에 나에게 이상한 것처럼 보입니다. 동일한 솔루션을 컴파일 할 것이므로 동일한 정의되지 않은 심볼을 가져야합니다.

분명히 VS는 lib를 내보내는 것과 동일한 솔루션을 사용하는 경우 다른 것을 연결 한 다음 연결하는 것과는 다른 방식으로 작업하고 있습니다. 누구나 이런 종류의 행동을하고 왜 내가 시도하고 해결할 수 있는지 알 수 있습니까?

+0

정적 라이브러리를 참조하는 설치 프로젝트를 만들 때 릴리스 폴더에서 DLL을 참조하고 빌드 전 단계를 작성한다는 것을 알고 있습니다. 지금까지 내가 아는 한, 프로젝트를 참조하는 것뿐만 아니라 DLL에 링크해야합니다. 아니면 최소한 저 또한 나를 위해 일한 적이 없습니다. – BoldAsLove

+0

정적 라이브러리를 직접 링크 : 구성 등록 정보 -> 링커 -> 입력 -> 추가 종속성 – rpress

+0

미안하지만 이미 구성 등록 정보 -> 링커 -> 입력 -> 추가 종속성에서 링크되어 있습니다. DLL은 빌드 할 때로드 할 수 있지만 실행시로드 될 때만로드되며로드 할 때는로드되지 않습니다. – walshy002000

답변

0

아! 감사합니다 rpress, 나는 FTGL_LIBRARY_STATIC을보고 FTGL 프로젝트에 정의되어 있는지 확인했지만 FTGL 헤더를 포함하고 있었기 때문에 내 프로그램에서 dllimport를 수행하려고했습니다. 내 응용 프로그램의 프로젝트에 FTGL_LIBRARY_STATIC을 추가하면 모든 것이 작동합니다. 감사!