问题: 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