1

Objective-C からこれを呼び出すため、ヘッダー ファイルで文字列を返す関数を宣言しようとしています。基本的にこれでうまくいきますよね?

std::string myFunction();

しかし、「Expected ';'」というエラーメッセージがスローされます トップレベルの宣言子」の後、多くの検索が行われ、誰もがヘッダーファイルに #include を入れることを提案しました。私もそれを試しましたが、機能しませんでした。

別の関数がdoubleを返すようにすると、問題はありません。

double doSomething(double a);

-

#include <string>

「'string' file not found」というエラー メッセージが表示されます。私のプロジェクトが破損する可能性がある場合に備えて、新しいプロジェクトを作成しようとしましたが、検索パスなどに何かを入れる必要がありますか?

ここに画像の説明を入力

ついに私はそれを作った。 解決策: Build Settings / Apple LLVM Compiler 4.2 で「Compile Source As」設定をObjective-C++に変更すると、魅力的に機能しました。

4

3 に答える 3

3

少なくとも、stringclassstd::stringが宣言されている C++ 標準ライブラリの header を含める必要があります (実際には、これはクラス テンプレートの typedef ですが、それは別の問題です)。

#include <string>

std::string myFunction();

また、独自のヘッダーにインクルード ガードを必ず使用する必要があります。

于 2013-04-07T15:17:49.970 に答える
1

ヘッダー ファイルがありません:

  #include <string>
于 2013-04-07T15:18:25.560 に答える
1

ObjC ファイルは C++ ではなく C に基づいて構築されていることを覚えておく必要があります。Objective-C で C++ ファイルを使用する場合は、ObjC ファイルの拡張子を .m から .mm に変更して ObjC++ ファイルにする必要があります。または、そうしないと、C ファイルに C++ ヘッダーをインクルードしようとするようなものになります。

于 2013-04-07T15:36:58.297 に答える