【问题标题】:32Bit DLL not building properly32 位 DLL 未正确构建
【发布时间】:2013-06-10 09:51:49
【问题描述】:

我们有一个 c# 可执行文件,它加载一个用 C++ 编写的 32 位 dll,它动态加载另一个 32 位 dll(第一个 dll 是一个包装器)。

当这是在 32 位机器上构建时(使用 VS 工具集 v100),它一切正常。

当它构建在 64 位机器上(使用 VS 工具集 v110)时,它可以在某些机器上运行,但在其他机器上它会在包装器 dll 上获得 FileNotFoundException。它在一些 64 位机器上工作,在一些机器上失败,并且在至少一台 32 位机器上失败。

失败发生在 Assembly.LoadFrom 中,位置来自 Assembly.GetExecutingAssembly().Location。 dll 与 exe 位于同一目录中,exe 构建为 x86。

如果在 64 位机器上构建以获得失败的版本,那么我会放入一个在 32 位机器上构建的包装 dll 版本,它可以正常工作(所以它不是真正的文件未找到问题,而是“正确' 文件未找到)。

任何想法为什么会失败?它是构建机器还是工具集?或者是其他东西?我可以在构建中设置什么使其正常工作(我想继续在 64 位机器上构建)?

【问题讨论】:

  • 我假设您将 C# 可执行文件的输出平台设置为 x86 而不是 AnyCPU?
  • 是的。但奇怪的是,我在 32 位机器上遇到了同样的问题(并且在一些 64 位机器上工作)。我一直怀疑这个问题不是 32 对 64 的问题。我已经转储了两个 dll,但它们看起来相同(并且没有代码更改)。

标签: c# visual-studio dll 32bit-64bit


【解决方案1】:

您是否在客户端计算机上安装了所有依赖项 dll?像 VC Runtime,你依赖的其他库?

【讨论】:

    猜你喜欢
    • 2013-06-08
    • 2013-06-02
    • 1970-01-01
    • 2015-04-15
    • 2013-06-17
    • 2022-01-20
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    相关资源
    最近更新 更多