2011-03-02 2 views
0

VC++ Express 2010에서 두 개의 프로젝트를 만듭니다. 하나는 DLLTest이고 다른 하나는 CODETest입니다. 다음과 같이C++에서 DLL에서 내 보낸 함수를 사용하는 방법은 무엇입니까?

DLLTest에서() 선언하고 func 함수를 정의

__declspec(dllexport) void func() {...}; 

빌드 DLLTest 프로젝트를 성공적으로 DLLTest.dll 및 DLLTest.lib 파일이 생성되었습니다. 다음과 같이

CODETest
에서, 나는 내 보낸 기능을 사용하려면 :

#include "DLLTest.h" 
int main() 
{ 
    ... 
    func(); 
    ... 
    return 0; 
} 

오류시 빌드 CODETest 프로젝트 ---> "확인되지 않은 외부 기호"무효 __cdecl의 letterList "(무효), 발생 하지만 내가 성공적으로 빌드 프로세스, CODETest 프로젝트의 디렉토리에 DLLTest.lib를 추가 할 때.

나는 잘 모릅니다 왜? 도움을 주셔서 감사합니다.

+0

방금 ​​당신 자신의 질문에 답했습니다 : 당신이 사용하고자하는 DLL의'lib' 파일을 포함시켜야합니다. –

+0

그래, 문제는 해결되지만, 나는 그 이유를 모른다. 왜 lib 파일을 추가 할 때 성공적으로 빌드해야합니다. – Jason

답변

2

이것은 "func"가 "letterList"로 변형 된 부분과 같이 거의 보이지 않습니다. 그럼에도 DLL에서 가져온 식별자를 확인할 수 있도록 DLL의 가져 오기 라이브러리를 링커에 연결하도록 링커에 지시해야합니다. MSVC에서이 작업을 수행하는 가장 쉬운 방법은 CodeTest.cpp의

#include "DLLTest.h" 
#pragma comment(lib, "dlltest.lib") 

입니다. #pragma는 링커의 추가 종속성 설정과 동일한 작업을 수행합니다.

+0

#pragma comment (lib, "dlltest.lib")'는 링커에게 DLL의 임포트 라이브러리를 연결하도록 알려줍니까? – Jason

관련 문제