2012-01-03 3 views
0

DLL로 컴파일중인 MyKinectDll이라는 Visual Studio 프로젝트가 있습니다. 나는 실행 파일 인 MyKinectApp라는 다른 프로젝트를 가지고있다. 나는 그 (것)들을 동일한 해결책에서 보낸다. MyKinectApp에서 MyKinectDll로 종속성을 추가했습니다. MyKinectApp에서 MyKinectDll에 대한 참조를 추가했습니다. MyKinectDll의 위치를 ​​MyKinectApp의 Additional Include Directories에 추가했습니다. 그런 다음 내 코드에서 #include "MyKinect.h"를 추가했습니다.이 파일은 MyKinectDll의 헤더 중 하나이며 인식됩니다. 그러나 컴파일 할 때 MyKinectDll 만 성공적으로 빌드되고 MyKinectApp에서 헤더 파일이 누락되었다는 오류가 발생합니다. 이 헤더 파일은 MyKinect.h에서 호출되며 MyKinectDll의 다른 위치에 있으며 자체적으로 올바르게 빌드됩니다.Visual C++에서 정적 라이브러리로 DLL 추가

링커 설정에서 MyKinectDll의 .lib에 링크해야하는지 확신 할 수 없지만 시도했지만 동일한 오류가 발생합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

많은 도움에 감사드립니다.

+0

너 사용하고있어? dll 함수/클래스를 dll에서 내보내려면'__declspec (dllexport)'를 사용 했습니까? –

+1

MyKinect.h에서 사용하는 모든 머리글의 위치를 ​​MyKinectApp 프로젝트의 추가 포함 디렉터리에 추가해야합니다. – StevieG

+0

@StevieG 그것을 해결 한; 고맙습니다. 그러나 나는 왜이 단계가 필요한지 이해하지 못한다. 확실히 dll은 혼자 서 있어야하며 기본 응용 프로그램에서 참조 할 참조가 필요하지 않습니다. 내 시스템 DLL을 사용하면 참조하는 모든 경로를 포함하는 것에 대해 걱정하지 않아도됩니까? –

답변

2

당신은 당신이 정적으로 연결하고 있기 때문에

가 있습니다 .. MyKinectApp 프로젝트 디렉토리를 포함 추가로 MyKinect.h 사용하는 모든 헤더의 위치를 ​​추가해야합니다 (이는 lib 디렉토리 파일과 연결됩니다 , 안 dll). 링커는 lib 파일에서 사용할 수 없으므로 클래스/메소드 선언을보기 위해 링크하고있는 라이브러리의 헤더 파일을 조사해야합니다. 동적으로 연결 한 경우, DLL 인터페이스에서 수출로이 경우 헤더 디렉토리를 포함 할 필요가 없습니다 것입니다, 그래서 링커는, 클래스/함수 선언을 참조 할 수

.. 비주얼 스튜디오 버전은

관련 문제