在我將第三方函式庫加入Keil中,並在main.c當中呼叫時出現了以下錯誤:

一開始以為是我用錯誤的方式匯入了Keil,後來在多次嘗試之後發現,main.c的建置環境是用C的編譯器去編譯,所以在main.c當中使用C++的語法會出現錯誤,因此要做一些動作來修改main.c的建置環境,修改成C++之後就能使用第三方函式庫了
- 因為我是使用CubeMX生成程式碼的HAL庫模式,因此首先在建置程式碼前有幾點要注意
CubeMX在GENERATE CODE前在Project Manager的頁面下的Code Generator分支中,Generated files中的"Generate peripheral initialization as pair of ‘.c/.h’ files per peripheral"『不要』勾選

一旦勾選下去,CubeMX會將生成的所有代碼當作是C編譯,因此有些只能用C編譯器編譯的程式碼不會用extern “C”來作保護,如果不勾選,CubeMX就會當作是我們會有其他的編譯器,因此會有extern "C"來保護
(2021/2/23更新)↑那是於2019年1月還發現的bug
由於未勾選這功能會造成所有初始化都放在main.c當中,當開啟某些功能時,會沒辦法產生新的.c檔案,造成編排上面的問題(目前知道開始USTAR功能時ustar.c不會產生)
因此,目前解決辦法:『依然勾選此功能,但當檔案調整成C++編輯器編譯時出現問題時,請將出現問題的程式碼加上extern "C"來做保護』(2021/2/23更新 END)
2. CubeMX生成程式碼後,利用Keil開啟時要設定的地方
(1)要將C++編譯器加入Keil


(2)要將main.c的編譯器更改成C++


3.1新增自己編寫的第三方程式
(1)如果想要新增新的資料夾目錄,需要使用File Extensions的功能




注意若創建的為.cpp檔案,一樣需要去調整他的編譯器


3.2 如果要新增已經有的執行檔與標頭檔
在剛剛新增目錄的右邊Add檔案

4.告訴main.c你的這些標頭檔與執行檔位置


