0

我有一个有点奇怪的问题,通常人们倾向于问如何从他们的可执行文件中删除对 msvcrXX.dll 的引用,而我有一个相反的问题:我需要强制我的可执行文件使用 msvcr100.dll。它是必需的,因为我将使用 CRT 的附加 DLL 链接到我的项目,并且此 DLL 导入 msvcr 函数。

所以我设置了 /MD 选项,然后在“调试”中构建时,我得到了一个工作代码(msvcr100.dll 在 EXE 的导入表中),但是当我尝试编译“发布”时,我实现了一个更大的可执行文件只有从 mylib.dll 和 kernel32.dll 导入,这会导致 CRT 未正确初始化并因此出现运行时错误。

我有

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

在代码中,例如,使用了“printf”函数。

提前感谢您的答案。

添加:我找到的解决方案:在代码开头添加“#define _DLL”并将msvcrt.lib添加到附加依赖项中。谷歌说,这就是“/MD”必须做的,不知道为什么没有。

4

1 回答 1

0

我找到的解决方案:在代码开头添加“#define _DLL”并将 msvcrt.lib 添加到附加依赖项中。谷歌说,这就是“/MD”必须做的,不知道为什么没有。

任何更美好的想法仍然值得赞赏。

于 2012-09-13T19:47:55.257 回答