32位DLL不能正确构建
本文关键字:构建 不能 DLL 32位 | 更新日期: 2023-09-27 18:18:22
我们有一个c#可执行文件,它加载一个用c++编写的32位dll,动态加载另一个32位dll(第一个dll是一个包装器)。
当它在32位机器上构建时(使用VS toolset v100),它都可以正常工作。
当它在64位机器上构建时(使用VS toolset v110),它在某些机器上运行,但在其他机器上,它在包装器dll上获得FileNotFoundException。它在一些64位机器上工作,在一些机器上失败,在至少一台32位机器上失败。
错误发生在汇编中。LoadFrom,其中位置来自Assembly.GetExecutingAssembly(). location。dll和exe在同一个目录下,exe是x86版本的。
如果在64位机器上构建以获得失败的版本,那么我在32位机器上构建的包装器dll的版本中下降,它可以正常工作(因此它不是真正的文件未发现问题,而是一个'正确'的文件未找到一个)。
知道为什么会失败吗?是构建机器,还是工具集?还是别的什么?我可以在构建中设置一些东西以使其正常工作(我想继续在64位盒上构建)?
客户端机器上是否安装了所有依赖dll ?像VC运行时,你依赖的其他库?