정적 라이브러리에서 함수를 노출하는 간단한 C DLL이 있습니다. DLL이 오류없이 컴파일되고 DUMPBIN을 실행하여 내보내기를 볼 수 있습니다. 그러나, 나는 C#에서 DllImport
으로로드 할 때,이 말한다 :cl.exe가 올바른 Windows 모듈을 생성하지 않는 이유는 무엇입니까?
System.DllNotFoundException: Unable to load DLL 'ei.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E).
그것은 확실히 올바른 디렉토리에 있습니다. 그래서, 내가 다른 것을 포함시킬 필요가있을 때를 대비하여 Dependency Walker를 시도하는 것이 좋은 생각 일 것이라고 읽었습니다. 내가 DW 내 DLL을 열려고하면 불행하게도,이 얻을 :
Error: At least one file was not a 32-bit or 64-bit Windows module.
을 여기 내 cl
명령입니다 :이 원인이 될 수 무엇
set ERL_INTERFACE_DIR=C:\Progra~1\erl5.7.2\lib\erl_interface-3.6.2\
call vcvars32.bat
cl /I%ERL_INTERFACE_DIR%include /LD ei.c ei.lib Ws2_32.lib /link /LIBPATH:%ERL_INTERFACE_DIR%lib
?
종속성 워커의 출력 (모듈 목록)을보다 잘 보여줍니다. – EFraim
EI.DLL <- 그게 유일한 것입니다. 그 옆에 빨간색 원이 있습니다. –