C++ 如何从Qt Creator项目调用碳函数?
我试图在Mac OS X上的Qt Creator项目中使用ChangeWindowAttributes()函数。 但是我不能建造这个项目 我所尝试的:C++ 如何从Qt Creator项目调用碳函数?,c++,qt,macos,C++,Qt,Macos,我试图在Mac OS X上的Qt Creator项目中使用ChangeWindowAttributes()函数。 但是我不能建造这个项目 我所尝试的: #include <MacWindows.h> #包括 结果(编译器):找不到文件 #include <Carbon/Carbon.h> // Or the same: #include </Developer/Headers/FlatCarbon/MacWindows.h> #包括 //或相同: #包
#include <MacWindows.h>
#包括
结果(编译器):找不到文件
#include <Carbon/Carbon.h>
// Or the same:
#include </Developer/Headers/FlatCarbon/MacWindows.h>
#包括
//或相同:
#包括
结果(编译器):此范围中未声明ChangeWindowAttributes
#include <Carbon/Carbon.h>
extern OSStatus ChangeWindowAttributes (
WindowRef window,
WindowAttributes setTheseAttributes,
WindowAttributes clearTheseAttributes
);
// And in *.pro file:
LIBS += -framework Carbon
#包括
外部OSStatus更改窗口属性(
WindowRef窗口,
WindowAttributes设置这些属性,
窗口属性清除这些属性
);
//在*.pro文件中:
LIBS+=-骨架碳
结果(链接器):未定义的符号ChangeWindowAttributes(
我错在哪里
根据谷歌的说法,似乎每个人都知道如何包含它,所以到处都没有指南。也许这里有人也有指南的链接或其他什么?默认情况下,QT Creator在Mac的CPU架构中构建您的项目。库本身有x86和x86_64通用二进制文件。如果您使用来自诺基亚的预构建SDK 如果您正在运行支持64位的OS/Mac组合,如新的Intel Mac上的10.6,它将在x86_64中构建。您的代码仍可以使用Carbon调用,但仅可使用标记为64位兼容的调用。打开MacWindows.h并查找ChangeWindowAttributes。您将在注释中看到:
* Availability:
* Mac OS X: in version 10.0 and later in Carbon.framework [32-bit only]
* CarbonLib: in CarbonLib 1.0 and later
* Non-Carbon CFM: not available
如果必须调用此函数(以及其他仅32位函数),则必须强制Creator以32位(x86)构建它。将以下行添加到.pro文件中:
CONFIG -= x86_64
CONFIG += x86
清理所有内容并重新生成。尝试使用“而不是<和>谢谢。这真的很重要。但是用Qt的QWidget::winId()替换64位以下的ChangeWindowAttributes有什么用呢?我不知道。可能没有。苹果几乎没有假装关心就让碳流血而死。通过Obj-C接口,你可能可以在Cocoa中找到一些东西。但问题是,你为什么要在Qt项目中这样做?如果你有一些特殊需要,你应该发布一个关于如何使用Qt.Yo实现它的问题你是对的。我已经发布了最初的问题:实际上,我们认为它在Qt中无法解决,但希望我们是错的。