0

参照される C++ クラスがあり、次に変数を宣言します。私はobjective-cで宣言します:

cObject obj = cObject();
obj.myFunct("test");

しかし、リンカエラーがあるようです。それは言います:

Undefined symbols for architecture armv7:
  "cObject::cObject()", referenced from:
    -[...] in xxx.o
    ___cxxx_global_var_init in xxx.o
"cObject::myFunct(std::__1:basic_string<char,str::__1::char_traits<char>, str::__1::allocator<char> >)", referenced from:
    -[///] in xxx.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1(use -v to see invocation)

編集:コメントで解決された最初のエラー:最初の部分を解決した空のコンストラクターを定義しないでください。2 番目の部分は、obj.myFunct("test"); の呼び出しについて言及しています。

4

2 に答える 2

1

クラスのデフォルトのコンストラクターとmyFunct関数をどこかに定義する必要があります。

cObject::cObject()
{
    ...
}

return_type cObject::myFunct(std::string arg1)
{
    ...
}

それらが定義されている場合は、それらが定義されているオブジェクト ファイルにリンクしていることを確認してください (つまり、ソース ファイルを Makefile/プロジェクト ファイル/コマンド ラインなどに追加します)。

于 2012-11-06T21:00:20.327 に答える
0

これは2つの部分からなる答えです。

エラーの最初の部分は、コンストラクターが空であるためです。空にすることはできません。空の場合はエラーがスローされます。これを解決するために、コンストラクターを削除しました。コンパイラーはデフォルトでコンストラクターを作成します。

質問の他の部分は、コンパイルの問題からです。どういう意味ですか?つまり、この場合のファイル、test.hには、コンパイルされていないデータが関連付けられています。私はこれを解決するためにコメントを通して助けられましたが、最終的にXCodeプロジェクトに入り、セクションに関連付けられた小さなプラスボタンをクリックして「ソースのコンパイル」セクションに.cppを追加しました。そのソースが正常にコンパイルされた後、プログラムは実行され、完全に機能し、関数を呼び出し、計画どおりにクラスを正しく宣言しました。

@ AdamRosenfield、@ EdS。、@H2CO3がそれを通して私を助けてくれたことを私は信用していません

于 2012-11-06T22:06:40.670 に答える