2013-01-07 176 views
1

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

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

+1

请尝试使用文本中的某些段落。 –

+0

VC++是托管项目?也许在其他计算机上安装.NET Framework? – Alexan

+0

我不认为它是.net框架,因为它已经安装。 –

回答

3

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

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

+1

谢谢汉斯!一如既往,你是对的。我切换到释放和重建修复了我的问题。 –