代码之家  ›  专栏  ›  技术社区  ›  Jonathan D

如何在64位项目中引用32位DLL?

  •  15
  • Jonathan D  · 技术社区  · 15 年前

    System.BadImageFormatException 是 未处理的消息:无法加载文件 或组件 TreeTMHook, Version=1.0.2889.19619, Culture=neutral, PublicKeyToken=null 是用来加载程序的 格式不正确。

    我怎样才能解决这个问题?

    我希望能够保持主项目作为任何cpu。

    谢谢。

    4 回复  |  直到 15 年前
        1
  •  15
  •   Bob    15 年前

    如果希望.NET项目在64位计算机上正确加载32位DLL,则需要将其构建为32位(x86目标)。

    回复:更新:

    如果你想保持你的项目为“任何CPU”,你需要一个32位和64位版本的DLL,并确保适当的版本与你的应用程序一起分发。如果无法将另一个项目生成为64位,则必须将.NET项目生成为32位。

        2
  •  4
  •   Hans Passant    15 年前

    你必须强迫你的EXE项目运行在32位模式,所以它可以使用C++ +DLL。项目+属性,生成选项卡,平台目标=x86。

        3
  •  1
  •   AndersK    15 年前

    你可以看看这个 article 它解释了为什么这是不可能的,简而言之,因为您在访问非托管代码时处理的是指针。

        4
  •  1
  •   JoeG    15 年前

    把你的主要项目 Any Cpu ,您需要同时提供32位和64位版本的.dll-这应该是可能的,因为您正在从源代码构建它。

    然后,您需要为可执行文件提供一个清单,根据平台将其指向右侧的dll版本。

    推荐文章