Objective-C++ で記述されたサードパーティ ライブラリにアクセスできるように、App Delegate ファイルを .m から .mm (Objective-C から Objective-C++) に変換しています。Objective-C では、アプリ デリゲートが正常にビルドおよび実行されます。しかし、拡張子を変更すると、プロジェクトがビルドされ、リンク エラーが発生します。これらはすべて、使用している C で記述されたスタティック ライブラリのシンボルが欠落しています。エラーは、次の形式の従来のリンク エラーです。
「MyFunction(arguments)」、以下から参照:
-MyAppDelegate.o の [MyAppDelegate myMethod]
シンボルが見つかりません
すべての問題はアプリ デリゲート オブジェクトにあります。ViewController ファイルが .mm であるため、Objective-C++ をコンパイルする準備が整っていることがわかります。だから私の質問にはいくつかの部分があります。
まず、これらのシンボルは、私が使用できないという意味で本当に存在しないのでしょうか? つまり、Objective-C++ ファイルから単純な古い C 関数にアクセスすることはできないのでしょうか? これが本当なら、かなり残念です。私は、ほぼすべての Objective-C コード、そして少なくとも .mm としてビルドされるすべての Objective-C コードが有効な Objective-C++ であると考えました。私が間違っている?
そうでない場合、これらのエラーを防ぐ方法はありますか? 私が知らない Objective-C++ で異なるヘッダー ルールはありますか?
助けてくれてありがとう。