是否有可能强制在32位进程中运行.NET dll以像64位进程一样“行动”?

时间:2011-03-02 17:25:26

标签: .net vb.net vb6-migration postgresql pervasive

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

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

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

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

此时此问题不一定是因为我可以安装32位驱动程序,但是在未来的某个时刻我可以想象32位驱动程序可能无法使用所以我将成为众所周知的小溪

1 个答案:

答案 0 :(得分:2)

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

  1. 以32位模式运行并加载DLL的VB6应用程序
  2. 实际访问驱动程序的64位进程。
  3. 使用许多不同的选项可以在32位和64位进程之间进行通信:这里可以想到WCF。