我有一个遗留的msvs2005 c ++项目库(dll)。我在安装了msvs2008的WindowsXP工作站上打开了项目并编译好了代码。但是当我尝试将它与可执行模块一起使用时,我观察到“my-library.dll或其中一个依赖项未找到”。
Dependency Walker告诉我错过了MSVCP80.DLL,MSVCR80.DLL,MSVCR90D.DLL。 MSJAVA.DLL也错过了。我安装了2008 Visual C ++可再发行组件包,但问题仍然存在。所需的库未放入System32文件夹。
我应该在工作站上安装什么,或者我应该在项目配置中采取什么措施来避免这个问题?
提前谢谢!
答案 0 :(得分:5)
作为并排集会的重复受害者,因为几年前发生了不圣洁的恐怖事件,我不得不定期处理这件事。 @Frederic是正确的,使用您的安装程序安装可再发行组件是理想的,但您可能还有其他问题。
也就是说,如果您可以访问Vista / Windows7计算机,则可以使用sxstrace。这是一个用于追踪这些问题的非直观工具。您可以使用使用该工具生成的信息来确切了解您的应用所需的内容。
在命令行上运行
sxstrace.exe -logfile:sxstrace.st
现在启动应用程序并收到错误
现在输入:
sxstrace parse -logfile:sxstrace.st -outfile:sxstrace.txt
现在您可以查看输出文件,看看应用程序运行时到底发生了什么。
来源:http://blogs.msdn.com/b/junfeng/archive/2006/04/14/576314.aspx
另外,您可能需要查看msdn上的这篇文章,因为它有助于解决这些问题: http://msdn.microsoft.com/en-us/library/ms235342(VS.80).aspx
答案 1 :(得分:3)
您应该安装Visual C++ 2005 Redistributable Package或Visual C++ 2005 SP1 Redistributable Package,因为旧版代码是使用Visual Studio 2005(8.0)编译的。
如果使用VS 2005 SP1编译代码,请使用SP1可再发行组件。
答案 2 :(得分:2)
安装了2008 Visual C ++可再发行组件包,但问题仍然存在。
你从哪里得到了redist?
有多种版本的redist,MSVC附带的版本最有可能是合适的版本。然而,有一些事情发生,例如ATL安全更新等,所以你需要看的是清单中存在的版本号信息,然后找到要安装的正确版本(或更新版本)。 p>
如果您希望在另一台计算机上使用该库的调试版本,请注意您需要调试redist。