Использование Swift с Qt

Мы можем с легкостью использовать Objective-C с С++ в Qt.

Наблюдая за многими переговорами Apple WWDC 2015, я ожидаю, что Swift заменит Objective-C на развитие OS X (и iOS); все демонстрации использовали Swift.

Учитывая, что вы можете использовать Objective-C и Swift вместе с заголовочным заголовком, можно ли скомпилировать Swift-код в проекте Qt и получить доступ к объектам первого класса Swifts (классы, структуры, переходы и т.д.) с помощью С++?


Если это возможно...

Вызов функции Objective-C из Qt требует обертывания кода в функции C, с заголовком C, который вызывается из Qt.

Вызов Swift из Objective-C требует заголовка моста для обозначения того, какие файлы Swift доступны. Этот заголовок затем ссылается на проект XCode; мы можем сделать это в Qt.pro, и если да, то как?

Предполагая, что мы можем указать заголовок моста, мы все же только разрешили вызывать Swift из файлов Objective-C, но может ли Swift быть вызван непосредственно из Qt в С++?

Ответы

Ответ 1

Вызов функции Objective-C из Qt требует обертывания кода в функции C, с заголовком C, который вызывается из Qt.

Это не совсем так, Obj-C и Obj-С++ функции и методы можно вызывать непосредственно из Obj-С++. Учитывая, что Obj-С++ является (главным образом) С++, сопряжение между Qt и Obj-C/С++ тривиально. Вы можете просто назвать свои файлы реализации Qt.mm вместо .cpp! Вы можете вызывать Qt или стандартный С++ непосредственно из реализаций метода Obj-C, скомпилированных как файлы Obj-С++ (.mm, not.m) и наоборот.

Есть способ укорачивать быстрый компилятор для создания заголовка моста для вас, и это может быть интегрировано в .pro файл в качестве настраиваемого компилятора или настраиваемой цели.