无法解释的错误“请使用/ MD开关进行_AFXDLL构建”

时间:2014-04-09 13:01:41

标签: visual-studio-2010 visual-c++ mfc cmake

我使用VisualStudio2010和CMake 2.8.12.1。我为MFC项目创建了一个CMakeLists.txt。 MFC功能是通过CMake文件中的以下行完成的:

add_definitions(-D_AFXDLL) #enables MFC
set(CMAKE_MFC_FLAG 2)      #use shared MFC library

此外,项目将使用MD作为运行时库(默认)构建。但现在我希望我的项目可以构建为MT(这也需要指定静态MFC库)。所以我用以下代码替换了上面的行:

add_definitions(-D_AFXDLL)          #enables MFC
set(CMAKE_MFC_FLAG 1)               #use static MFC library
set(CMAKE_CXX_FLAGS_RELEASE "/MT")  #set release configuration to MT
set(CMAKE_CXX_FLAGS_DEBUG "/MTd")   #set debug configuration to MTd

如果我现在构建我的项目,我会收到错误消息:

致命错误C1189:#error:请使用/ MD开关进行_AFXDLL构建

据我所知,这意味着一方面的MT / MD与另一方的静态/共享MFC库之间存在不匹配。我再次检查了项目设置中的配置。运行时库IS设置为MT,MFC库IS设置为静态。所以我不明白这个错误。有人知道帮忙吗?我错过了什么吗?

此致 迈克尔

1 个答案:

答案 0 :(得分:1)

_AFXDLL永远不会与静态MFC构建一起使用! _AFXDLL。

_AFXDLL仅在使用共享MFC构建时设置。

静态MFC构建也意味着静态CRT。