問題: dll被編譯爲64位,使用dll的程序被編譯爲32位。VS2013 - LoadLibrary無法找到dll
解決方案:使用64位的64位dll編譯程序。
我有一個dll,我叫mydll.dll
。我已經能夠在VS2013之外編譯.cpp
文件,並且能夠加載dll。一旦我嘗試在VS2013和LoadLibrary(mydll.dll)
中使用與我的.cpp
相同的文件夾中的dll製作相同的.cpp
文件,它無法找到dll,即使我直接路徑到dll,它仍然不起作用。
我的DLL已被證明在VS2013之外工作,所以我不認爲這是問題的根源。可能的來源是我的無知。
代碼:
(Main.cpp的)
int main(void){
HINSTANCE dllHandle;
dllHandle = LoadLibrary("mydll.dll");
if (!dllHandle){
printf("dll no load\n");
system("pause");
return 1;
}
else{
printf("dll load!\n");
}
}
你不應該把DLL在同一文件夾作爲cpp文件。它應該在exe文件所在的文件夾中。默認情況下,它們在Visual Studio中不會相同。還要確保你沒有混合32位和64位。我的意思是你不能加載64位應用程序中的32位DLL或32位應用程序中的64位DLL。 – drescherjm 2014-10-18 03:26:05
@drescherjm你非常正確!我用Cuda的64位NVCC編譯我的Dll。我所要做的只是將VS2013中的構建設置更改爲x64,並且工作正常。如果您發佈它,我會將其設置爲答案。 – MichaelMitchell 2014-10-18 03:34:03