2

我在处理一个非常困难的 dll 时遇到了麻烦。我正在使用侧 dll 使我的 Windows 窗体应用程序与网络摄像头一起使用。应用程序在装有 VS2012 的 PC 上和装有 VS2012 的笔记本电脑上运行良好,但在虚拟机上运行的 Windows XP 上根本无法运行。
我收到 JIT 消息

System.IO.FileNotFoundException: Could not load file or assembly '---, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.

为了防止出现很多问题,我会回答自己:
的,dll 确实使用 .exe 复制到目录
是的,我确实将它部署为“发布”
是的,我确实将应用程序编译为 x86 目标平台
是的,我确实将 dll 编译为 x86 目标平台
是的,我确实安装了 vcRedist 所有版本以针对 Windows XP
是的,我确实安装了从 3.0 到 4.0 的 .NET 以针对 Windows XP


我只是不知道为什么我的带有 Visual Studio 的计算机可以使用该 dll,但 XP 不能。

4

2 回答 2

2

Dependency Walker将是用于找出您的 DLL 中缺少哪个依赖项并因此阻止 XP 加载它的工具。

您是否使用“v110_xp”工具集(Visual Studio 2012 - Windows XP 工具集随更新 1)构建了本机 C++ DLL?如果你没有,那就是你的问题。默认情况下,使用普通 v110 编译器配置在 VS2012 中构建的 C++ 代码会生成一个无法在 Windows XP 上运行但需要 Vista 或更高版本的可执行文件。

于 2013-03-05T19:05:58.417 回答
0

请注意“或其依赖项之一”短语...这可能是您的问题,而不是它自己的 dll

您的 dll 可能正在调用某些 api 或使用 XP 中不可用的 dll。

Dependency walker是你的朋友

于 2013-03-05T19:08:00.247 回答