3

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

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

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

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

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

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

4

1 回答 1

0

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

于 2013-07-04T12:11:25.347 回答