-2

iPhone 用の Objective-C プロジェクトを作成しました。cpp クラスは 1 つだけで、Apple のデモから取った soundEngine です。現在、Objective-C++ でコーディングされている OpenFeint をマージしようとしています。ファイルをドラッグするだけでコードにドロップし、プロジェクト設定で「Objective-C で C++ デフォルト ctors/dtors を呼び出す」にチェックマークを付けるだけです。私は自分のコードからそれを参照していません。[ビルド] をクリックすると、Objective-C コードが cpp ファイルのメソッドを見つけられません。OpenFeint を含むすべてのクラス ファイルがコンパイルされますが、リンク段階でこれらのエラーのいくつかが表示されます。

これらのリンク エラーを報告するときは、メソッドの前にアンダースコアを追加していることに注意してください。

PS OpenFeint の場合、最初にファイルを .mm に変換する必要があることはわかっていますが、可能であれば、開発のこの段階ではその道をたどりたくありません。そのためのラッパーObjective-C++クラスを作成しようとしていました。私は誰かがそれをやったと読みました。

4

2 に答える 2

0

ファイルではないObjective-C++ファイルがあると言っている場合.mm、特別なことをしない限り、Objective-C++として読み取られていません。.mmObjective-C++ファイルの拡張子です。そのため、使用するようにアドバイスされています。

于 2010-04-05T04:32:03.087 に答える
0

but in the linking stage it says several of these errors: "_SoundEngine_SetDisabled", referenced from: someClass.o

There's no name mangling on that method. Is it declared as extern "C" in a header somewhere but defined as a C++ method/function.

于 2010-04-30T15:34:32.243 に答える