使用64位项目的32位库 - .NET

时间:2016-01-15 21:13:09

标签: c# .net x86

我们的应用程序都是64位。我们将ADODB提供程序提供给第三方数据库(nexusdb)。它是32位,由.NET库(我们引用得很好)和我相信C .dll(32位)组成。因此,当我们在32位编译时,它工作,在64它抱怨它找不到C .dll。

如果不将代码编译为32位,我们如何解决这个问题?

编辑:

第三方DLL如下: ADONET.dll - 这是我引用的.NET本机DLL,它引用得很好。 ADONETProvider.dll - 这是我只保留在bin /文件夹中的非.NET 32位DLL。

我不想为x86编译我的项目,因为我引用了许多其他项目,而且它们都是64。

我想确保ADONET.dll以某种方式调用“32位模式”

1 个答案:

答案 0 :(得分:4)

您必须使用某种代理进程和IPC从64位进程访问32位dll。

前段时间我编写了LegacyWrapper项目,隐藏了一个简单的API调用。您可能希望查看corresponding blog post以获取技术详细信息。

修改: Since Version 2.1, LegacyWrapper also supports loading 64bit DLLs from a 32bit process.