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

问题描述:

我几乎可以肯定,这是不可能的,但它值得一问...是否有可能强制在32位进程中运行的.NET dll像“64位进程一样运行”?

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

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

那么,有没有办法迫使.NET的DLL在64位进程中运行(编译为64不起作用,因为COM互操作寄存器是不允许的)

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

+1

没有道理,你忘记了另一条小溪。没有VB6桨的那个。 – 2011-03-02 19:40:23

+0

远离VB6不是一种选择,因为可能需要3年的时间重写代码。 – 2011-03-03 09:02:07

不,没有办法让任何32位进程表现得像是64位一样。我能想到的最好的方法是使用2个过程。

  1. 其在32位模式下运行和装入您的DLL
  2. 64位方法,该方法实际*问驾驶员的VB6应用。

有可能使用多种不同的选择32个和64位进程之间进行通信:WCF说到这里介意。

+0

还有哪些其他选项?我认为VB6应用程序无法调用WCF服务。 – 2011-03-03 09:06:43