2014-01-21 4 views
0

QT Creator 및 CImg으로 작업해야하는 프로젝트를 인계하려고하지만 내 컴퓨터에는 빌드되지 않습니다.QT + CImg은 OSX 10.9에서 빌드되지 않습니다.

/Users/vikkosmi/Qt/5.2.0/clang_64/lib/QtCore.framework/Headers/qvariant.h:132: error: expected '}' 
    Bool = QMetaType::Bool, 
    ^

이 오류와 12 개의 유사한 오류는 내가 만들 때 계속 나타납니다. Qt 코어에서 나옵니다.

cimg를 사용하여 Windows 플랫폼에서 osx로 이동할 때 다시 작성해야 할 사항이 있습니까? 내가 아는 한 코드는 휴대용이어야합니다.

라이브러리를 다시 설치하고 XQuarts를 설치하고 프로젝트 파일에 경로를 포함 시키려고했지만 여전히 동일한 문제가 발생합니다. (도움을 위해 미리 감사드립니다!

답변

0

당신이 구축하고 당신이 Qt를 구축하는 경우에, 당신이 파산 일부 로컬 수정이 -?. 신선한 소스로 시작

을 당신은 Qt를 사용하는 코드를 작성하는 경우를 다음 문제에 이 코드의 냄새는 무엇인가 QVariant의 코드를 방해하는 Bool 매크로를 정의했다는 것입니다.

이 파일은 qvariant.h이 아닙니다. 당신의 일부 .cpp 파일입니다 - 오류 메시지를 보면 "yourfile.cpp를 컴파일하는 동안"같은 것을 포함 할 것입니다. 이 파일에서 첫 번째 줄로 #include <QVariant>을 입력해야합니다. 이렇게하면 문제가 일시적으로 해결됩니다.

코드에서 Bool을 검색하고 전역 네임 스페이스 오염을 수정해야합니다. 귀하의 코드가 깨졌습니다, 의심의 여지가 그것에 대해 생각합니다.

+0

입력 해 주셔서 감사합니다. 전체 프로젝트에서 Bool을 찾았습니다. 그 프로젝트는 어디에도 없습니다. 을 맨 위에 놓으면 (여러 그래픽 라이브러리가 모든 곳에 포함되어 있기 때문에) 아무 것도 해결하지 못하는지 알게 될 것입니다. 코드가 엉망이며 청소해야하지만 차라리 먼저 작업하게하여 악화시키지 마십시오. – Vikko

0

X11 라이브러리 (기본적으로 CImg에서 사용)는 Bool을 정의합니다. Qt로 작업 할 때 CImg의 디스플레이 기능을 사용하지 않으려는 경우 컴파일 할 때 cimg_display=0 매크로를 정의하여 비활성화하는 것이 좋습니다. CImg은 X11 헤더를 포함하지 않으므로 문제가 해결 될 수 있습니다.

+0

CImg은 처리 된 그림을 렌더링하는 데 사용되는 반면 Qt는 명령을 렌더링하는 데 사용됩니다 인터페이스를 사용하여 설정을 조정합니다. 나는 그 순간에 cimg_display = 0이 옵션이 아니라는 것을 두려워한다. ( – Vikko

+0

@Vikko 'QVariant'가 먼저 작동하는 한 포함 순서 문제이다. X11 헤더는 braindead이고, Bool은 –

+0

main.cpp의 첫 줄에 QVariant를 포함 시켜서 더 많은 오류가 발생했습니다.이 전체 프로젝트가 OS/X와 호환되지 않기 때문에 프로젝트에서 CImg을 제거하고 찾을 것입니다. 그것을 필요로하지 않는 대안적인 접근법. – Vikko