0

我的程序依赖于 Microsoft 重新分发包,或者更具体地说,依赖于 MSVCR100.dll

推荐的方法是在我的程序运行之前安装重新分发包。但是,我的程序很小(大约 1MB),vcredist.exe 大约 5MB,对于我的安装程序来说有点太大了。

所以这是另一种方式,根据微软的许可,我们可以将 dll 安装到\VC\redist\x86\Microsoft.VC100.CRT\我的应用程序文件夹中的子文件夹()中。所以我的应用程序目录是这样的:

MyAppFolder\a.exe
MyAppFolder\lib\a.dll
MyAppFolder\VC\redist\x86\Microsoft.VC100.CRT\MSVCR100.dll

我的问题是,如何让 a.dll 找到位于另一个文件夹中的 MSVCR100.dll?

4

2 回答 2

0

您可以考虑将 CRT 链接为静态库,将不依赖于 MSVCRxxx.dll,

但你的 EXE/DLL 会更大。

http://msdn.microsoft.com/en-us/library/abx4dbyh%28v=vs.100%29.aspx

http://msdn.microsoft.com/en-us/library/aa984514.aspx

如果您的项目包含一个 EXE/DLL,则此解决方案适用,但对于较大的项目,您可以创建带有 MSVCRT 合并模块的 MSI 包。

于 2012-10-16T07:17:55.207 回答
0

刚刚找到了一个可以解决我的问题的函数——AddDllDirectory 。

是的,我可以将 CRT 链接为静态库,但在我的情况下,有几个库依赖于它,这意味着每个 dll 都有一个 MSVCR100.dll 的副本。

于 2012-10-17T06:07:42.920 回答