我们的应用程序都是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位模式”
答案 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.