这是至少两个密切相关但不同的问题系列的一部分,我希望单独提问是否正确。
我试图让我的Visual C++ 2008应用程序在没有C运行时库的情况下工作。它是一个Win32 GUI应用程序,没有MFC或其他花哨的东西,只有纯Windows API。
因此,我将项目属性->配置->C/C++->高级->省略默认库名称设置为Yes(编译器标志/Zl
),然后进行重建。假装我已经编写了一个适当的入口点函数,这是我另一个问题的主题。
我得到了两个链接器错误;它们可能是相关的。链接器抱怨foobar.obj
中未解析的外部符号__fltused
和_memcpy
。不用说,我在我的程序中都没有明确使用它们,但是我确实在foobar.cpp
的某个地方使用了memcpy
。(我本来会使用CopyMemory
,但是结果证明它被#define
为与memcpy
相同...)
(我以为可以通过使用编译器内在功能来解决memcpy
问题,例如#pragma intrinsic(memcpy)
,但这没有任何区别。)
如果我查看预处理器输出(在编译器命令行中添加/P
),则在foobar.i
中看不到对__fltused
或_memcpy
的引用。
那么,我的问题是:这些链接器错误源自何处,以及如何解决它们?