2014-04-09 2 views
1

VisualStudio2010 및 CMake 2.8.12.1을 사용합니다. MFC 프로젝트 용 CMakeLists.txt를 만들었습니다. MFC 기능은 CMake 파일의 다음 줄에 따라 수행되었습니다.설명 할 수없는 오류 "_AFXDLL 빌드에/MD 스위치를 사용하십시오."

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

또한 프로젝트는 MD로 런타임 라이브러리 (기본값)로 빌드됩니다. 하지만 지금은 내 프로젝트를 MT (정적 MFC 라이브러리를 지정해야 함)로 빌드하려고합니다.

가 는 치명적인 오류 C1189가

: # 오류가 : 사용하십시오 _AFXDLL에 대한/MD 스위치가

을 구축 지금 내 프로젝트를 빌드하는 경우

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 

, 나는 오류 메시지가 얻을 : 그래서 위에서 라인을 교체

내가 아는 한 이것은 MT/MD와 정적/공유 MFC 라이브러리 간의 불일치가 있다는 것을 의미합니다. 프로젝트 설정에서 구성을 다시 한 번 확인했습니다. 런타임 라이브러리 IS는 MT로 설정되고 MFC 라이브러리 IS는 정적으로 설정됩니다. 그래서 나는 그 오류를 이해하지 못한다. 아무도 도움을 알고 있습니까? 내가 뭐 놓친 거 없니?

안부, 마이클

+0

이미 답변 됨 http://stackoverflow.com/questions/4229120/error-please-use-the-md-switch-for-afxdll-builds – xMRi

+0

불행히도, 이것은 답변이 아닙니다. 내 질문에 언급 한 바와 같이 런타임 라이브러리 및 MFC 라이브러리 (!) 일관된 (MT + 정적) 설정하고 오류 메시지가 여전히 발생합니다. 그래서 제가 도움을 청합니다. – MichaelXanadu

+0

내 대답에서 알 수 있듯이, 그렇지 않습니다;) – xMRi

답변

1

_AFXDLL는 정적 MFC 빌드 사용되지 않습니다! _AFXDLL.

_AFXDLL은 공유 MFC 빌드가 사용되는 경우에만 설정됩니다.

정적 MFC 빌드는 정적 CRT를 의미합니다.

관련 문제