3

関数ポインターを渡そうとしていますが、コンパイラ エラーが発生し続けます。通常は関数ポインターを渡しませんが、この場合はそれが必要です。私が間違っていることを確認するには、宣言を見るだけでよいと思います。

私が持っているヘッダーファイルで:

pthread_t * createThread(void *(*func)(void *), string arg)

実装では同じです:

pthread_t * createThread(void *(*func)(void *), string arg)

私がやっているこの関数の呼び出しで: createThread(&afunction, "run again")

関数の宣言は次のとおりです。

void *afunction(void *ptr) //(no header, same for both declaration and implementation).

しかし、コンパイラはこれを吐き出します:

    Undefined symbols for architecture x86_64:
  "createThread(void* (*)(void*), std::basic_string<char, std::char_traits<char>, std::allocator<char> >)", referenced from:
      spawnSingleThreadTest()     in threadTests.o
4

1 に答える 1

1

実装を実行可能ファイルにリンクしていません。関数ポインタについてではありません。これが、ソースをコンパイルする方法です。

于 2012-04-18T08:14:28.563 に答える