Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我的DLL不是有效的Win32应用程序_C++_Windows_Dll - Fatal编程技术网

C++ 我的DLL不是有效的Win32应用程序

C++ 我的DLL不是有效的Win32应用程序,c++,windows,dll,C++,Windows,Dll,我用VisualStudio2008构建了一个DLL,第三方软件应该加载并使用它 在我的旧服务器上,这工作得非常好,但在新服务器上,第三方抱怨它无法加载我的DLL。为了测试这种行为,我使用第三方软件也使用的入口点运行带有rundll32.exe的DLL 在旧服务器上,rundll32.exe调用终止而没有任何抱怨,但是在新服务器上,我会看到一个windows弹出窗口,其中说明: “启动C:\MyDll.dll时出现问题。 C:\MyDll.dll不是有效的Win32应用程序。“ DLL编译为64

我用VisualStudio2008构建了一个DLL,第三方软件应该加载并使用它

在我的旧服务器上,这工作得非常好,但在新服务器上,第三方抱怨它无法加载我的DLL。为了测试这种行为,我使用第三方软件也使用的入口点运行带有rundll32.exe的DLL

在旧服务器上,rundll32.exe调用终止而没有任何抱怨,但是在新服务器上,我会看到一个windows弹出窗口,其中说明: “启动C:\MyDll.dll时出现问题。 C:\MyDll.dll不是有效的Win32应用程序。“

DLL编译为64位,两台服务器都安装了Windows 7 64位SP1

你有什么建议可能导致我的问题吗?有没有办法获取导致加载DLL失败的更多信息

编辑:

  • 我的dll是64位的
  • 两个rundll32.exe都是64位的
  • 部署过程应该是正确的:我将dll复制到了第三方应用程序所期望的正确文件夹中,而且rundll32.exe会抱怨没有找到dll(如果没有)

而dll是32位的?您使用的是32位版本还是64位版本?您在何处以及如何部署dll?您是否在
System32
中复制了32位DLL而不是32位文件夹'C:\Windows\SysWOW64`?Windows安装程序包(MSI)会将dll部署到正确的文件夹。如果直接复制文件,则应确保将其放置在正确的文件夹中,即第三方软件是32位还是64位?32位应用程序无法加载64位DLL您是否尝试过编译和部署32位DLL版本?如果这样做有效,则新服务器的rundll32.exe可能实际上是32位而不是64位。@Rhymoid 64位Windows版本同时具有32位和64位版本的rundll32。事实上,只要您不将32位文件放在64位文件夹中,或者反之亦然,Windows就会负责调用正确的版本。@KenWhite AFAIK,Win32是抽象API的名称(与WinRT或.NET相反),并不表示您使用的是32位还是64位代码。