2013-06-13 3 views
0

저는 비주얼 스튜디오에서 Qt와 Cryengine으로 작업하고 있습니다. 나는이 프로젝트와 같은 대규모 프로젝트에 새로운 것이지만 실제로이 엔진에 뭔가를 추가 할 시점에 이르렀습니다. 내 코드는 한 조각 씩 컴파일되지만 내 "인디 게임"프로젝트를 컴파일하려고하면 연구 후 필자는 여전히 해결 방법을 모른다는 오류를 연결합니다. 나는 그 오류를 내 코드 InventoryGUI와 연관 짓는다. 왜냐하면 그 파일을 제거하면 프로젝트는 링크 오류없이 잘 컴파일되기 때문이다.비주얼 스튜디오 (복수 프로젝트) 링크 오류

이 내 InventoryGUI 코드와 인디 게임 http://imgur.com/hzmGdvH

이 그것을 포함하는 헤더 파일을 만들려고 할 때 표시되는 오류입니다. http://imgur.com/o22GHXg

여러분의 도움에 감사드립니다. 물론, 당신이 내 코드의 다른 부분을 볼 필요가 있다면 알려주고 그것을 게시 할 것입니다.

감사

편집 : 함수 "createInventory()는"다른 프로젝트에서 함수 InventoryGUI를 호출하는 추가 잊으. 프로젝트 간 이동은 오류의 원인 일 가능성이 높습니다.

답변

0

InventoryGUI 클래스가 공유 라이브러리 ("dll")에 정의되어 있고 실행 파일에서 사용되는 경우 심볼을 내보내야합니다 (Windows 빌드의 경우).

#ifdef WIN32 
# ifdef MY_LIB_EXPORTS 
#  define MY_LIB_DLL __declspec(dllexport) 
# else 
#  define MY_LIB_DLL __declspec(dllimport) 
# endif 
#else 
# define MY_LIB_DLL 
#endif 

class MY_LIB_DLL InventoryGUI 
{ 
... 
}; 

그런 다음, InventoryGUI을 정의하는 라이브러리가 MY_LIB_EXPORTS을 정의해야합니다 그래서 뭔가를하려고합니다. 당신은 프로 파일 시스템을 사용하는 경우 예를 들어,이

DEFINES += MY_LIB_EXPORTS 

다른 프로젝트처럼 보일 것이다는 안된다. 라이브러리의 다른 클래스에 대해 유사한 메커니즘이 있는지 확인하십시오.

+0

미안 토템입니다. 빌딩 프로세스 및 이와 유사한 대규모 프로젝트 통합에 대해서는 잘 모릅니다. 나는 당신이하는 말의 일부를 이해한다고 생각하지만 조금은 그걸로 길을 잃었습니다. 첫째, InventoryGUI는 .exe로 컴파일 된 Qt 프로젝트에서 정의되고 IndieGame은 .dll로 컴파일됩니다. 네가 준 코드. 내가 inventorygui.cpp의 Qt에 그걸 넣어야 할 것 같네요? 그리고 미안하지만, 나는 InventoryGUI를 정의하는 라이브러리에 대해 당신이 말하는 것을 따르지 않습니다. – user2453703

+0

생각이 들었습니다. 내가 말했던 것처럼, 이것은 이것과 같은 커다란 프로젝트로 처음으로 작업 한 것이므로, 기본적으로 나에게 주어진 것을 가지고 가고있었습니다. dll에서 실행 파일에 정의 된 함수를 사용하는 것이 가장 좋습니다. Qt 프로젝트를 .dll로 변경해야합니까? – user2453703

+0

@ user2453703 dll에서 exe 함수를 사용하는 것은 확실하지 않습니다. D 대신에 반대를 수행하는 것이 좋습니다. 기호 띄우기 ('__declspec (dllexport)'처럼)는 다른 lib 나 실행 파일에서 사용되는 DLL 코드를위한 것입니다 – azf