2017-12-27 1709 views
0

我想編譯一個swift程序,它使用在運行Linux(Ubuntu 16.0.4)的虛擬機上用Objective-C編寫的代碼,Swift 4.0.3)。Linux上的Swift Objective-C互操作性錯誤:找不到'Foundation/Foundation.h'文件

我編譯時出現此錯誤:

fatal error: 'Foundation/Foundation.h' file not found 
#import <Foundation/Foundation.h> 
     ^
1 error generated. 

在Mac OS

相同的程序完美的作品在Mac OS。

我試過了什麼?

我試過恢復到迅速3.1.1(我記得這個工作在快速3前一陣子)。

我已經廣泛地搜索了這個問題,但沒有成功。

我已經按照有關如何安裝Linux上的Objective-C運行指令和安裝GNUstep的(見http://www.techotopia.com/index.php/Installing_and_Using_GNUstep_and_Objective-C_on_Linux

所有沒有成功。

爲什麼我使用objective-C?

(預測此問題)。

我需要從程序中調用python腳本。 Python有一個C庫,我只能用C或Objective-C。

事實上,註釋掉行#import <Foundation/Foundation.h>導入Python庫時發出編譯失敗:在Linux上

fatal error: 'Python/Python.h' file not found 
#include <Python/Python.h> 
     ^
1 error generated. 
+0

看起來您的基金會和Python框架的副本不在系統標題路徑中。 –

+0

@JoshCaswell,謝謝。我怎樣才能驗證這一點? – kmn

回答

2

斯威夫特是Objective-C的不能互操作,它與C.

據互操作到 https://github.com/apple/swift-package-manager/blob/master/Documentation/Usage.md#c-language-targets,您可以將純C代碼作爲您的軟件包的一部分,放在單獨的目標中。

您還可以將您的軟件包與C庫鏈接,請參閱https://github.com/apple/swift-package-manager/blob/master/Documentation/Usage.md#c-language-targets

在你的情況下,我會使用後面的方法,並將您的代碼與Python C庫鏈接。