【发布时间】:2014-05-22 16:55:33
【问题描述】:
我使用 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 库之间存在不匹配。我再次检查了项目设置中的配置。运行时库设置为 MT,MFC 库设置为静态。所以我不明白这个错误。有人知道帮助吗?我错过了什么吗?
问候, 迈克尔
【问题讨论】:
-
不幸的是,这不是答案。正如我的问题中提到的,运行时库和 MFC 库 ARE(!) 设置一致(MT + 静态)并且仍然出现错误消息。这就是我寻求帮助的原因。
-
正如您在我的回答中看到的,它们不是 ;)
标签: visual-studio-2010 visual-c++ mfc cmake