我使用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 :请为_AFXDLL生成使用/MD开关
据我所知,这意味着一边的MT/MD与另一边的静态/共享MFC库不匹配。我再次检查了项目设置中的配置。运行库设置为MT,MFC库设置为静态。所以我不明白这个错误。有人知道帮忙吗?我错过了什么吗?
你好,迈克尔
发布于 2014-04-09 14:34:33
_AFXDLL从未与静态MFC构建一起使用!_AFXDLL。
只有在使用共享MFC生成时才设置_AFXDLL。
此外,静态MFC构建也意味着静态CRT。
https://stackoverflow.com/questions/22963397
复制相似问题