gpt4 book ai didi

c# - p/从在 x64 机器上运行的 C# 程序调用 32 位 dll

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:00:52 27 4
gpt4 key购买 nike

我有一个 C# 程序,我在 x64 计算机上使用所有默认设置进行编译。

我想 p/调用一个我知道是 32 位(非托管)C++ DLL 的 DLL。

当我的 C# 程序在 32 位计算机而非 64 位计算机上运行时,我可以让它工作。

如何在调用 32 位 dll 的 DllImport 调用中指定?

我现在拥有的示例:

[DllImport("test32bitdll.dll", SetLastError=true)]
public static extern void MyFunc();

我没有test32bitdll.dll文件的源代码。

最佳答案

在 64 位进程中运行 32 位非托管代码是不可能的。或者相反。您可用的选项:

  • 使用“构建”选项卡中的“目标平台”设置强制 EXE 在 x86 模式下运行
  • 在 x64 模式下重新编译 C++ DLL。如果您拥有源代码而不是依赖于仅在 32 位中可用的某些第 3 方代码,这通常是可能的,没有太多麻烦
  • 在强制以 32 位模式运行的代理进程中运行 C++ DLL。您需要使用进程间通信机制让您的 64 位进程与 32 位代理通信。命名管道、套接字、.NET Remoting、WCF 是 .NET 中的典型选择。

第三个选项可以为您带来最大的 yield ,但如果交换了大量数据并且往往很脆弱,则它可能会很慢。处理代理过程的失败可能很困难。

关于c# - p/从在 x64 机器上运行的 C# 程序调用 32 位 dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3103938/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com