我刚刚将.m文件更改为.mm并使用C++.有没有办法用Swift做同样的事情?
我正在尝试在Mac应用程序上运行本机对象c代码。
我的代码如下:
MainWindow.h:
#ifdef Q_OS_MAC
#include <Carbon/Carbon.h>
#include <ctype.h>
#include <stdlib.h>
#include <stdio.h>
#include <mach/mach_port.h>
#include <mach/mach_interface.h>
#include <mach/mach_init.h>
#include <IOKit/pwr_mgt/IOPMLib.h>
#include <IOKit/IOMessage.h>
#endif
Run Code Online (Sandbox Code Playgroud)
MainWindow.cpp:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
#ifdef Q_OS_MAC
[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver: self
selector: @selector(receiveSleepNote:)
name: NSWorkspaceWillSleepNotification object: NULL];
#endif
}
#ifdef Q_OS_MAC
- (void) receiveSleepNote: (NSNotification*) note
{
NSLog(@"receiveSleepNote: %@", [note name]);
}
#endif
Run Code Online (Sandbox Code Playgroud)
但是正在收到似乎QT无法理解代码结构的错误:
application.cpp:错误:预期的外部声明-(void)receiveSleepNote:(NSNotification *)注意^
我知道如何objective-c在我的QtApplication. 通常MyQtApplication.pro文件包括像这样的objective-c源.mm文件,它可以做到这一点并且很容易。
# MyQtApplication.pro
ios {
CONFIG += objective_c
OBJECTIVE_SOURCES += SomeObjectiveCSource.mm
HEADERS += SomeObjectiveCSource.hpp
}
Run Code Online (Sandbox Code Playgroud)
问题:
有没有办法包含.swift文件?因此,在QtApplication 中从C++类包含、构建和调用Swift代码?难道Qt的现在正式支持呢?有我可以研究的具体例子吗?
我确实研究了这个讨论。但我正在寻找一个具体的例子。
或者,.swift从 .mm 文件中调用文件中的 API,该文件在我的 Qt 应用程序中充当桥梁?如果可能的话,我正在寻找具体的例子。