我有一個簡單的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 2009-08-24 07:23:45
EI.DLL < - 這是唯一的一個。它旁邊有一個紅色圓圈。 – 2009-08-24 07:24:51