Ошибка компоновщика Mac OS X в QT; CoreGraphics & CGWindowListCreate

Вот мой .mm файл

#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>, Я должен был указать полный путь к нему... какой-либо путь вокруг этого?

1
задан Jake Petroules 27 May 2010 в 08:43
поделиться

1 ответ

Функция CGWindowListCreate является частью Quartz Window Services. Соответствующим фреймворком является ApplicationServices, который находится в /System/Library/Frameworks/.

Таким образом, вы можете просто включить в верхней части файла и связать с -framework ApplicationServicesопцией.

2
ответ дан 3 September 2019 в 00:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: