c# - LoadLibrary 在 Vista x64 下失败

标签 c# winapi loadlibrary

在我从 XP 迁移到 Vista 之后,我意识到我的 C# 程序无法运行。

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

我在 Delphi 中测试过它,工作正常,但 C# - 不行。

我在 C# 中编写了额外的代码来简化我的检查。

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

它不需要 C++ 运行时,因为它是用库编译的,并且可以在 Vista 上的 Delphi 中运行,但不能在 C# 中运行。

问题出在哪里?

提前致谢。

最佳答案

在 x64 平台上,JIT 会将您的程序编译为 x64,因为您的 native C++ 被编译为 x86,因此无法加载它。
您需要明确告诉 JIT 将您的程序编译为 x86,您可以使用 CorFlags 来完成或者项目设置将 CPU 类型设置为 x86(在构建/平台目标下)

关于c# - LoadLibrary 在 Vista x64 下失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1116388/

相关文章:

c# - 使用内部连接从 Dapper 获取数据

c# - 泛型方法正在拾取基类的类型

c# - ASP.Net 网站无法重建解决方案也无法发布

Python ctypes.cdll.LoadLibrary 在 2.6.5 和 2.7.1 之间的工作方式不同

c# - 通过 C# 插入 MySQL

c++ - WinINet API 可以在 Windows Server 操作系统上使用吗?

c++ - Win32 处理来自 Rich Edit 控件的 WM_NOTIFY 消息

c++ - 邮寄消息 : How to post a message to a process that does not have a window?

c++ - LoadLibrary() 文件路径

java - 如何从另一个 native 库 (.so) 加载 native 库 (.so)?