在Vista x64下,LoadLibrary失败

Iva*_*nov 4 c# winapi loadlibrary

在我从XP迁移到Vista之后,我意识到我的C#程序不起作用.

这就是这样的情况:我在C#应用程序中编写了一个C++ DLL.这个DLL在XP中运行良好,但是当我转移到Vista时,它不再适用于C#.

我在Delphi中测试它,工作正常,但C# - 没有.

我写了额外的代码,以便在C#中更容易检查.

        if (LoadLibrary("blowfish.dll") == 0)
        {
            Misc.LogToFile("error", true);
            Application.Exit();
        }
Run Code Online (Sandbox Code Playgroud)

它不需要C++运行时,因为它使用库编译并且它在Vista上的Delphi中工作,但不适用于C#.

问题出在哪里?

提前致谢.

Sha*_*men 11

在x64平台上,JIT会将您的程序编译为x64,因为您的本机C++被编译为x86,它将无法加载它.
您需要明确告诉JIT将程序编译为x86,您可以使用CorFlags或项目设置将CPU类型设置为x86(在Build/Platform目标下)