在32位应用程序中使用64位库

3
我的.NET应用程序是32位的,因为我在其中使用了TWAIN。但是我需要编写一个64位的库或应用程序,并从我的程序中调用其方法。 我必须创建一个64位的库来与WMI SMO进行交互,如果将其编译为32位的dll,则其功能无法正常工作。
我该如何解决这个问题?是否可以从32位应用程序中使用64位库?

11
一个进程要么是32位的要么是64位的。这个决定在很早之前就由可执行文件的设置确定了。如果你需要同时使用32位和64位的代码,那么你需要两个不同的进程,并且在它们之间使用某种形式的IPC。 - Damien_The_Unbeliever
我个人使用协议缓冲区进行进程间通信。它使数据序列化变得非常容易。 - Black Frog
1个回答

2

您不能从64位可执行文件中引用32位库,反之亦然。这是一种技术限制。

但是,根据您的其他约束条件,您可以决定采用基于服务的架构来避免像您这样的问题,并在未来更具敏捷性。

实际上,您可以编写专门解决一个单一目的(扫描、与WMI交互等)的“微”服务,然后从应用程序中调用它们。这样,您完全可以选择任何您需要的技术/架构来完成应用程序所需的每个任务。将您的“功能”隔离在服务中,允许您拥有每个服务的不同演进路径,因为每个服务与其他服务松耦合。

这种解决方案需要编写比使用库更多的代码。首先,您需要创建一个Windows服务(msdn)来包装您的代码,然后您需要实现通信渠道。请查看WCFWebApi2,以了解您可以实现什么。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接