2015-01-28 3 views
1

으로 C++ DLL을 실행합니다. 그래서 rundll을 사용하여 C++로 작성된 DLL을 테스트하고 실행하려고합니다. 여기 및 다른 사이트에서 지침을 수행했으며 진입 점은 다음과 같습니다.rundll32 - 누락 된 항목이있는

__declspec(dllexport) void CALLBACK entry(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow) 
{ 
    //do stuff 
} 

그러나 RUNDLL 프로세스가 없다는 오류 메시지 상자 나에게 묻습니다 "오류 C에서 : \ 경로 \는 DLL 누락 된 항목을 \하기 : 항목을"

시도 실행 명령 : "Rundll32는 C는 : \ 경로 \는 \하기 DLL, 항목 ".

답변

6

DLL에서 Dumpbin.exe/exports를 실행하여 다시 검사하여 실제 내보내는 이름을 볼 수 있습니다. 오류 메시지에서 알 수 있듯이 현재 이 아닌entry이 아닙니다.

C++ 이름 변환을 사용하지 않으려면 선언에 extern "C"을 접두사로 추가해야합니다.

64 비트 실행 파일에는 충분하지만 32 비트 DLL 인 경우 [email protected]으로 바뀌지 만 여전히 rundll32를 만족하게 만들지는 못합니다. Project + 새 항목 추가, 코드 노드를 사용하여 "모듈 정의 파일 (.def)"항목 템플리트를 선택하십시오. 그리고 다음과 같이 만듭니다.

EXPORTS 
entry = entry 
관련 문제