1

我有一个带有两个项目的 Visual Studios 解决方案,一个是 VB.net,另一个是 VC++。VC++ 项目是 Nvidia 的 Driver API 的包装器,称为 Nvapi。它是一个 nvapi.lib 文件和相关的头文件。我的代码在我的开发机器上编译并运行良好,但我尝试将整个解决方案目录复制到另一台计算机并运行可执行文件,但出现错误,提示无法找到/加载 VC++ 项目 dll 或其依赖项之一。它运行良好,直到我的代码使用 nvapi 包装器但随后崩溃。我尝试发布该项目,以便它生成一个安装程序并以这种方式安装程序,但我得到了同样的错误。

我决定在另一台计算机上安装 VS2010,看看是否可以调试问题。安装 VS2010 后,我制作了解决方案文件夹的备份副本。然后我打开解决方案并编译并运行代码正常。现在这是我真的不明白的部分我去了解决方案的备份副本(在我的开发机器上编译的那个)导航到可执行文件并运行它,它现在工作正常。我唯一能想到的是编译代码将 Nvapi.lib 文件复制到系统目录,以便 exe 工作。有谁知道什么会导致这个问题,以及如何在不安装 Visual Studio 的情况下让我的代码在其他机器上运行?

4

1 回答 1

3

一个常见的错误是将 C++ 项目的调试版本复制到另一台机器上。它将无法找到运行时 DLL 的调试版本,例如 msvcr100d.dll。只部署发布版本。

如果您部署了 Release 版本但仍有问题,那么您可能忘记运行 vcredist 安装程序。当您只有一个 DLL 和一个不使用 C++ 标准库类的 EXE 时,您可以通过使用 /MT 进行编译,从技术上避免这种依赖关系。如果您不知道缺少的依赖项可能是什么,请使用 SysInternals 的 ProcMon。

于 2013-01-07T21:06:43.957 回答