代码之家  ›  专栏  ›  技术社区  ›  Bob

在64位计算机上服务32位DLL

  •  1
  • Bob  · 技术社区  · 16 年前

    我已经在64位机器上构建并安装了vs2010的服务。

    当我的服务引用32位dll(确切地说是spssio32.dll)时,我的问题就出现了-我在事件查看器中得到错误: "System.BadImageFormatException异常:试图加载格式不正确的程序。(HRESULT异常:0x8007000B)

    对此事的任何帮助都将不胜感激。

    当做, 拜伦·科布。

    2 回复  |  直到 16 年前
        1
  •  3
  •   RichieHindle    16 年前

    您的服务代码是用.NET语言编写的吗?如果是这样,你需要把它标记为目标 x86 Any CPU (通过项目属性/构建/平台目标)。

    (默认情况下,.NET代码目标) ,这意味着在64位机器上,它将编译成x64机器代码。因为这样的64位代码无法加载32位DLL,这可能会导致像您看到的那样的失败。如果代码依赖于32位DLL,则它需要始终编译为32位机器代码,即使在64位机器上也是如此,因此需要将目标平台设置为 x86个

        2
  •  1
  •   Stefan Steiger Marco van de Voort    16 年前

    您可以使用COM代理

    http://www.dnjonline.com/article.aspx?id=jun07_access3264

    另一个变体是派生一个外部32位服务器进程,并向它和64位应用程序添加一个.NETRemoting接口,这样就可以使用.NETRemoting进行进程间通信。

    推荐文章