我有一个在 VS2005 中创建的 C++/CLI 项目。我希望在 VS2010(或 2012)中运行它,因为这是我的主要 IDE ,我还需要修改 C++/CLI 项目中的一些东西,而且不得不来回切换到 vs2005 来重新编译、复制,这很烦人等等。另一个重要的原因是我在 VS2010/2012 中运行的项目是在 .NET4 中,所以没有选择将所有内容移至 VS2005。
该项目依赖于非托管第三方库,这些第三方库本身依赖于 c++ 可再发行库的调试版本(msvcr80.dll、msvcm80.dll、msvcp80.dll)
当我第一次运行升级后的项目时,我收到“找不到指定的模块”-
然后我注意到 cli 项目正在针对更高版本的 msvc (msvcr90.dll) 进行编译
根据depends的cli程序集依赖项;左边是 vs2005,右边是 2008
有没有办法使用 2005 库编译更高版本的 VS?
更新它对哪个编译器并不重要(并且可能无论如何都不可能)但是是否可以并排运行和调试?当我尝试运行已编译的项目时,我收到以下错误消息:
我尝试将清单文件从 vs2005 项目复制到 vs2010 项目,但这不起作用(相同的错误消息)。我还禁用了嵌入式清单并将生成的 .manifest 文件替换为来自 vs2005 的文件,这也不起作用。
update2通过在清单中指定 msvcr 库,我已经解决了这个错误:
<dependentAssembly>
<assemblyIdentity type='win32' name='Microsoft.VC80.DebugCRT' version='8.0.50727.762' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
</dependentAssembly>
AccessViolationException - Attempted to read or write protected memory
但是现在当我运行我的应用程序时,当我尝试使用其中一种方法时,第三方库之一会抛出一个错误。这段代码在 vs2005 中运行良好。