此页面说明如何使用您的应用部署VC ++ 2008库的本地副本,以避免必须安装第三方vcredist。这对我很有用,因为它可以让我发送一个压缩文件夹给用户,而不必使用不喜欢的安装程序。
但是,它对我不起作用。我的应用程序不使用MFC,只使用Win32,否则是标准的C ++。我有app/MyApp.exe
,那就是......我应该从%PROGDIR%\Microsoft Visual Studio 9.0\VC\Redist\x86
复制哪些文件,到底应该去哪里?
我正在XP模式虚拟PC上对此进行测试,当我尝试按照页面中的说明进行操作时,复制文件并不会导致“应用程序初始化失败”错误。我缺少一些步骤吗?
我查看了我的清单,似乎只能使用CRT:http://pastebin.com/BD4NZMC2
答案 0 :(得分:0)
解决DLL-hell的最简单方法是使用/ MT编译器标志(而不是默认/ MD)重新编译应用程序。这将静态链接C运行时库。 如果这是一个独立的exe,这将始终有效。
如果没有(即你有自己的DLL),你必须注意在同一个模块中分配和释放内存 - 也就是说,如果你malloc()一块可执行的内存和free()相同DLL中的指针,它会崩溃 - 因为可执行文件和DLL都会获得自己的堆,并且在不匹配的堆上尝试free()将无法正常工作。