在Swift剛釋出沒多久,我就研究過如何在同專案整合Objective C和Swift。文章:
儘管還是傾向以Objective C來開發產品,然而Swift的發展日趨重要,不過我大膽推測,就算Apple再怎麼強推Swift,十年內Objective C領導地位依然屹立不搖!為什麼呢?實際接觸4年Swift後,發現Swift變化多端,若猶豫要學Swift還是Objective C可以參考:要學Objective-C還是Swift?。
現在想要混編Objective C、Swift、C/C++,應也不是問題~
可以看到C語言副檔名:
- .h
- .c
Swift語言副檔名:
- .swift
Objective C語言副檔名:
- .h
- .m
其中可以看到.mm,這代表Objective C++語言。
比較要注意的是.mm中若要引用C語言的程式,可以參考:[C/C++] 如何引用C標頭檔
若沒有寫關鍵外部引用C:
extern “C"
{
#import Happy_Processing.h"
}
編譯就會出現以下錯誤訊息:
Undefined symbols for architecture arm64:
“Happy_FilterProcess(short*, short*, short*)", referenced from:
-[TPProcessViewController passSamples:] in TPProcessViewController.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
如此Xcode編譯器就能以副檔名來分辨要怎麼去Complie。
參考:
Comments on: "[iOS] 混編Objective C、Swift、C/C++" (2)
[…] [iOS] 混編Objective C、Swift、C/C++ […]
讚讚
佩服過去的我如此厲害地整合三個程式語言!🤠
讚讚