Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何从Qt Creator项目调用碳函数?_C++_Qt_Macos - Fatal编程技术网

C++ 如何从Qt Creator项目调用碳函数?

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> #包括 //或相同: #包

我试图在Mac OS X上的Qt Creator项目中使用ChangeWindowAttributes()函数。 但是我不能建造这个项目

我所尝试的:

#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中无法解决,但希望我们是错的。