제어 할 수없는 C++ 프로그램에서로드하는 D DLL이 있습니다. 프로그램 LoadLibrary 내 DLL 및 GetProcAddress 하나의 인수 (포인터) 걸리는 "extension_load"라는 함수를 찾으려면 사용합니다. 내 D의 DLL에서 내가 가진 :내 보낸 함수 기호 이름 변경
extern (C) int extension_load(void* ptr) {
return 0;
}
그리고이 이름은 extension_load로 내 보내야하지만, GetProcAddress를 그것을 찾을 수 있도록이 4 @ extension_load로 수출되고있다. 맹 글링없이 이름을 일반 extension_load로 만드는 방법은 무엇입니까?
그리고 GetProcAddress *는 * 함수를 찾지 못합니까? 'extension_load @ 4 '는 어디에서 왔는가? (즉, 어떻게이 이름을 알 수 있었습니까?) – jpalecek
@jpalecek, 미안, 나는 그것이 암시 된 줄 알았다. GetProcAddress는 extension_load의 이름으로 함수를 찾지 못합니다. @ 4는 모든 인수의 바이트 길이로 구성되어 있으며 extension_load @ 4는 디버거로 프로세스를 열고 메모리의 문자열을 extension_load @ 4로 수정하면 extension_load @ 4가 현재 내보내지고있는 것을 알 수 있습니다. 발견된다. –