0

我几乎可以肯定这是不可能的,但值得一问......

我们有一个从我们的 VB6 应用程序调用的 .NET DLL。VB6 应用程序在 32 位进程中运行,因此 DLL 在同一进程中运行(它被编译为任何 cpu)因此,当我在 DLL 中执行我的 ODBC 数据库访问时,将仅使用 32 位驱动程序,因为这是它认为的它需要(记录数据库是 Pervasive PSQL)

当应用程序在 64 位机器上运行(仅安装 64 位 ODBC 驱动程序时)时出现我的问题,因为它找不到合适的驱动程序来使用。

那么有没有办法强制 .NET DLL 在 64 位进程中运行(编译为 x64 不起作用,因为不允许注册 COM 互操作)

在这个时间点这不一定是问题,因为我可以安装 32 位驱动程序,但在将来的某个时候,我可以想象 32 位驱动程序可能不可用,所以我会在众所周知的小河上。

4

1 回答 1

2

不,任何 32 位进程都无法像 64 位进程一样运行。我能想到的最好的方法是使用 2 个进程。

  1. 以 32 位模式运行并加载 DLL 的 VB6 应用程序
  2. 实际访问驱动程序的 64 位进程。

可以使用许多不同的选项在 32 位和 64 位进程之间进行通信:这里想到了 WCF。

于 2011-03-02T17:28:28.943 回答