2010-05-27 3 views
1

가 여기 내 .mm 파일 링커는 저를 말하고있다Qt의 Mac OS X 링커 오류입니다. 있는 CoreGraphics & CGWindowListCreate

#include "windowmanagerutils.h" 

#ifdef Q_OS_MAC 
#import </System/Library/Frameworks/ApplicationServices.framework/Frameworks/CoreGraphics.framework/Headers/CGWindow.h> 

QRect WindowManagerUtils::getWindowRect(WId windowId) 
{ 
    CFArrayRef windows = CGWindowListCreate(kCGWindowListOptionOnScreenOnly, kCGNullWindowID); 
    return QRect(); 
} 

QRect WindowManagerUtils::getClientRect(WId windowId) 
{ 
    return QRect(); 
} 

QString WindowManagerUtils::getWindowText(WId windowId) 
{ 
    return QString(); 
} 

WId WindowManagerUtils::rootWindow() 
{ 
    QApplication::desktop()->winId(); 
} 

WId WindowManagerUtils::windowFromPoint(const QPoint &p, WId parent, bool(*filterFunction)(WId)) 
{ 
    return NULL; 
} 

void WindowManagerUtils::setTopMostCarbon(const QWidget *const window, bool topMost) 
{ 
    if (!window) 
    { 
     return; 
    } 

    // Find a Cocoa equivalent for this Carbon function 
    // [DllImport("/System/Library/Frameworks/Carbon.framework/Versions/Current/Carbon")] 
    // OSStatus ret = HIViewSetZOrder(this->winId(), kHIViewZOrderAbove, NULL); 
} 
#endif 

이다 "_CGWindowListCreate는"정의되지 않습니다. 어떤 라이브러리에 링크해야합니까? Apple의 문서는 MSDN과 같이 포함 시키거나 연결할 내용을 알려주는 데별로 도움이되지 않습니다. 또한 나는 단지 #import <CGWindow.h>을 할 수 없었고, 절대 경로를 지정해야만했다.

답변

2

CGWindowListCreate 함수는 Quartz Window Services의 일부입니다. 해당 프레임 워크는 아래에있는 ApplicationServices입니다.

따라서 파일 상단에 <ApplicationServices/ApplicationServices.h>을 포함하고 -framework ApplicationServices 옵션과 연결할 수 있습니다.

+0

오타가 수정되었습니다. 그것을 발견해 주셔서 감사합니다. –

+0

모든 도움을 주셔서 감사합니다. 내 .pro 파일에'mac : LIBS + = -framework ApplicationServices' 및 내 .mm 파일에있는'#import '를 배치하여 ApplicationServices에 연결할 수있었습니다. –