1

此页面说明如何使用您的应用程序部署 VC++ 2008 库的本地副本,以避免安装 3rd-party vcredist。这对我很有用,因为它可以让我将一个压缩文件夹发送给他们可以运行的用户,而无需使用不喜欢的安装程序。

但是,它对我不起作用。我的应用程序不使用 MFC,只使用 Win32,否则是标准 C++。我有app/MyApp.exe,就是这样......我应该从哪些文件中复制%PROGDIR%\Microsoft Visual Studio 9.0\VC\Redist\x86它们以及它们应该去哪里?

我在 XP-Mode 虚拟 PC 上对此进行测试,当我尝试按照页面中的说明进行操作时,跨文件复制不会改变“应用程序无法初始化”错误。我缺少一些步骤吗?

我查看了我的清单,似乎只使用了 CRT:http: //pastebin.com/BD4NZMC2

4

1 回答 1

0

解决 DLL-hell 的最简单方法是使用 /MT 编译器标志(而不是默认的 /MD)重新编译您的应用程序。这将静态链接 C 运行时库。如果这是一个独立的 exe,这将始终有效。

如果没有(即你有自己的 DLL),你必须注意在同一个模块中分配和释放内存——也就是说,如果你 malloc() 可执行文件中的一块内存和 free() DLL 中的相同指针,它会崩溃——因为可执行文件和 DLL 都会获得自己的堆,并且在不匹配的堆上尝试 free() 将不起作用。

于 2011-05-18T09:46:59.843 回答