在64位系统上使用32位dll显示0x8007000B错误

Ren*_*uka 7 iis dllimport visual-studio-2010 32bit-64bit c#-4.0

我必须在我的应用程序中使用第三方DLL.DLL是32位,我使用的系统是64位操作系统.

我在我的DotNet应用程序(framework-4.5)中导入了32位DLL,如下所示

 [DllImport("Sample.dll",
  EntryPoint = "Add",
  CharSet = CharSet.Ansi,
  CallingConvention = CallingConvention.StdCall)]
  public static extern int Add(int iA, int iB);
Run Code Online (Sandbox Code Playgroud)

在IIS 7.5中 - 我将"启用32位应用程序"设置为"True".

并尝试将编译器管理器设置为 - X86,x64和任何CPU.

但是所有的尝试都会导致相同的错误

 An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题......

4pi*_*ie0 0

检查配置管理器中的“构建”复选框以获取可执行文件、它运行的 CPU,可能您在那里有任何 CPU 构建。然后重新启动 Visual Studio,以免抱怨无法调试程序集。

右键单击该项目并打开“属性”->“编译”->“高级编译选项”->“目标 CPU”:它应该与您正在构建的“平台”匹配。也就是说,如果您正在构建“任何 CPU”,那么“目标 CPU”应该为“任何 CPU”。通过激活所有平台来浏览它们并检查此设置。

如果您尝试在 IIS 7(和/或 64 位操作系统计算机)上运行 32 位应用程序,您将收到相同的错误。因此,在 IIS 7 中,右键单击应用程序的应用程序池,然后转到“高级设置”并将“启用 32 位应用程序”更改为“TRUE”。

重新启动您的网站,它应该可以工作。