2009-12-10 2 views
1

현재 내 프로젝트에서 최신 안정 fmod ex를 사용하려고합니다.fmod 종속 프로젝트의 VS2008 외부 참조

나는 engine4라는 프로젝트에서 주 실행 파일을 가지고 있으며, 솔루션에 DX9Platform이라는 프로젝트도 의존하고있다. 모든 fmod 코드는이 DX9Platform 프로젝트에 있으며 lib 파일을 생성합니다.

DX9Platform에는 fmodex_vc.lib가 포함되어 있습니다. 그러나 Engien4를 작성하면 DX9Platform 프로젝트에서 fmod를 사용하는 파일을 참조하는 확인되지 않은 외부 기호 메시지가 생성됩니다.

Engine4 프로젝트에 fmodex_vc.lib를 추가하려고 시도했지만 성공하지 못했습니다.

Heres는 링커 출력 :

3>------ Build started: Project: Engine4, Configuration: Release Direct3D9 Win32 ------ 
3>Linking... 
3>DX9PlatformLib.lib(CFmodSound.obj) : error LNK2001: unresolved external symbol _FMOD_System_Create 
3>DX9PlatformLib.lib(CFmodSound.obj) : error LNK2001: unresolved external symbol "public: enum FMOD_RESULT __thiscall FMOD::System::createSound(char const *,unsigned int,struct FMOD_CREATESOUNDEXINFO *,class FMOD::Sound * *)" ([email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@Z) 
3>DX9PlatformLib.lib(CFmodSound.obj) : error LNK2001: unresolved external symbol "public: enum FMOD_RESULT __thiscall FMOD::System::getVersion(unsigned int *)" ([email protected]@[email protected]@[email protected]@[email protected]) 
3>DX9PlatformLib.lib(CFmodSound.obj) : error LNK2001: unresolved external symbol "public: enum FMOD_RESULT __thiscall FMOD::System::init(int,unsigned int,void *)" ([email protected]@[email protected]@[email protected]@[email protected]) 
3>DX9PlatformLib.lib(CFModAudioObject.obj) : error LNK2001: unresolved external symbol "public: enum FMOD_RESULT __thiscall FMOD::System::playSound(enum FMOD_CHANNELINDEX,class FMOD::Sound *,bool,class FMOD::Channel * *)" ([email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@Z) 
3>DX9PlatformLib.lib(CFModAudioObject.obj) : error LNK2001: unresolved external symbol "public: enum FMOD_RESULT __thiscall FMOD::Channel::getPaused(bool *)" ([email protected]@[email protected]@[email protected]@[email protected]) 
3>DX9PlatformLib.lib(CFModAudioObject.obj) : error LNK2001: unresolved external symbol "public: enum FMOD_RESULT __thiscall FMOD::Channel::setPaused(bool)" ([email protected]@[email protected]@[email protected]@[email protected]) 
3>DX9PlatformLib.lib(CFModAudioObject.obj) : error LNK2001: unresolved external symbol "public: virtual class IAudioObject * __thiscall CFModAudioObject::LoadFile(char const *)" ([email protected]@@UAEPAVIAudioObject@@[email protected]) 
3>D:\media\desktop\engine4\Engine4\Output\Release Direct3D9\Engine4.exe : fatal error LNK1120: 8 unresolved externals 
3>Build log was saved at "file://d:\media\desktop\engine4\Engine4\Engine4\intermediate\Release Direct3D9\BuildLog.htm" 
3>Engine4 - 9 error(s), 0 warning(s) 
========== Build: 1 succeeded, 1 failed, 0 up-to-date, 1 skipped ========== 
+0

정확한 링커 출력을 여기에 게시 할 수 있습니까? 일부 컴파일러 설정으로 인한 심볼 불일치 일 수 있습니다. –

+0

완료, 질문 편집 –

+0

이 문제도 있습니다. –

답변

0

여기에서의 트릭 C++ API를 사용하여 때문에 컴파일러 불일치의 작동, 그래서 가능하면 C API를 사용 않을 것입니다.

또한 일부 fmod 설명서의 유효 기간이 만료되었습니다. 특정 코드가 '컴파일'되지만 완전히 링크/작동하지 않습니다.

0

FMOD 4.32.02 64 비트에서 VS2005와 동일한 문제가 발생했습니다. 그러나 32 비트 버전은 예상대로 연결되어 작동하므로 현재 대신 사용하고 있습니다.

다른 라이브러리 libsndfile을 사용할 때 실제로 똑같은 문제가있었습니다. 제가 두 번째로 그것을 보았을 때 저는 도서관이 잘못 컴파일되었을 가능성을 배제하였습니다. 분명히 any 64-bit library으로 이것을 얻을 수 있습니다.

다행히도 compiler option을 설정해야합니다. 아직 시도하지는 않았지만, plentyinfo입니다. there입니다.