c# - 在 .Net 2.0 的 64 位应用程序中使用 32 位 DLL

标签 c# dll 64-bit x86 32-bit

我需要使用来自外部公司的 COM-DLL(因此我没有源代码),它只适用于编译选项 CPU-Target x86。

但我的程序是“任何 CPU”程序,我不想更改它。

所以我阅读和谷歌了很多,发现我需要 2 个与 IPC 和 WCF 通信的进程。

问题:WCF 不适用于 .Net Framework 2.0。

那么在不更改主程序的 CPU 目标的情况下最好和最简单的方法是什么?

最佳答案

如果您有 x86 目标 dll,无论是 .Net 程序集还是 native dll,那么您必须在 32 位进程中托管此 dll - 对于 .Net,这意味着选择x86 平台,否则你的 dll 将无法在 64 位机器上加载。

如果您绝对必须尽可能拥有 64 位进程,那么使用此 dll 的唯一真正方法是创建一个外部 32 位进程来“托管”dll 并与您的主进程通信通过 IPC(进程间通信)的 64 位进程。 WCF 只是进程间通信的一种方法 - 它在 .Net 2.0 中不可用,但您仍然可以使用其他方法,例如 .Net 远程处理。

参见 Interprocess communication for Windows in C# (.NET 2.0)

然而,所有这些实现和维护起来都会很痛苦 - 除非您有非常充分的理由,只需使用 x86 平台编译您的应用程序,至少在外部公司发布 64 位版本之前版本。

关于c# - 在 .Net 2.0 的 64 位应用程序中使用 32 位 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9292606/

相关文章:

c# - Any CPU dependent on C++/CLI dependent on native C dll (any cpu for c++/cli)

c# - 如何在 Web api,C# 中的 Action 过滤器中获取帖子表单参数值?

C# Enum 忽略名称的顺序

c# - 使用 dll 方法时出现 FileNotFoundException

.NET 相当于 size_t

c++ - 64 位 dll 的大小比 32 位大 50%

c# - 如何重写数据集中表上的 TableAdapter 方法?

C# 单元测试中未捕获的异常

c++ - 将目前作为独立可执行文件开发的 C++ 项目转换为 DLL

windows - 什么是 36 字节长的 *.dll 文件在 PHP 的 windows 发行版中?符号链接(symbolic link)?如何?