我正在尝试将我的程序与静态MFC库链接起来,如makefile中的以下目标代码所示(其余部分已提交):
!include <win32.mak>
all: window.exe
.cpp.obj:
$(cc) $(cdebug) $(cflags) $(cvars) $*.cpp
window.exe: window.obj
$(link) $(ldebug) $(guiflags) -out:window.exe window.obj mfc100d.lib mfcs100d.lib $(winlibs)不幸的是,nmake停止了链接过程,并显示了以下错误:
除了告诉Microsoft忽略nafxcwd.lib之外,我是否需要指定任何附加的库名或预处理器定义?
发布于 2015-12-27 11:17:24
首先:不要使用NODEFAULTLIB选项。在这个阶段它不是为你准备的。这事很重要。你必须改变其他的选择。
MFC与应用程序的链接方式必须与CRT的链接方式相同。MFC链接设置在项目属性>配置属性>通用>使用MFC中。有两个选项,静态和动态链接。
CRT链接(和编译)设置在项目属性>配置属性> C/C++ >代码生成>运行时库中。应该有四种选择。名称中没有DLL的是用于静态链接的。名称中有DLL的是用于动态链接的。那些名称中有Debug的是用于Debug配置的。
只要匹配这两个选项,问题就会消失(或者如果您有多个问题,那么至少输出构建中的文本应该会改变)。
在nmake项目中,如果您想链接到静态MFC,则不要将mfc100d.lib和mfcs100d.lib库链接到您的项目,因为这些库是用于动态链接的。链接到nafxcwd.lib for Debug (您已经在链接该链接,否则不会出现任何错误),或者nafxcw.lib用于发布。另外,必须定义_AFX宏,并且必须有一个选项,要么是用于发布的/MT,要么是用于调试构建的/MTd。
但是,如果要动态链接MFC,则定义_AFXDLL宏,并添加选项/MD (用于发布)或/MDd (用于调试生成)。有关更多信息,请参见微软技术说明TN033中的“使用NMAKE构建”一节。
一个问题可能是,您有一个已经以某种方式设置的第三方库,然后在您的设置中必须遵循这种方式。另一个问题是如果您有两个这样的库,但是它们是以不同的方式设置的。那就不可能把它们联系在一起。如果这关系到你,我会扩大答案。
https://stackoverflow.com/questions/34479365
复制相似问题