C++ C++;将函数指针作为参数传递

C++ C++;将函数指针作为参数传递,c++,g++,C++,G++,我试图传递一个函数指针,但我一直得到一个编译器错误。我通常不传递函数指针,但这种情况需要传递函数指针。我想你只需要看一下声明就知道我做错了什么 在头文件中,我有: pthread_t * createThread(void *(*func)(void *), string arg) 在实施过程中,它是相同的: pthread_t * createThread(void *(*func)(void *), string arg) 在调用此函数时,我正在执行以下操作: createThread(

我试图传递一个函数指针,但我一直得到一个编译器错误。我通常不传递函数指针,但这种情况需要传递函数指针。我想你只需要看一下声明就知道我做错了什么

在头文件中,我有:

pthread_t * createThread(void *(*func)(void *), string arg)
在实施过程中,它是相同的:

pthread_t * createThread(void *(*func)(void *), string arg)
在调用此函数时,我正在执行以下操作: createThread(&A函数“再次运行”)

函数的声明是:

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
架构x86_64的未定义符号: “createThread(void*(*)(void*),std::basic_string)”,引用自: 在threadTests.o中生成SingleThreadTest()
您没有将实现链接到可执行文件。这与函数指针无关。这是您编译源代码的方式。

createThread的定义在哪里?它看起来像什么?所有这些都位于同一个文件中(以及如何构建它)?这是一个链接器错误,这意味着链接器无法找到函数的定义。您在项目中使用过名称空间吗?如果有任何问题,请检查一下。拼写错误,或者您使用了不同的名称空间进行声明和定义?是的,这是链接器问题,而不是编译器问题。这当然是链接问题?它试图修复哪个“createThead”创建线程?,啊,我明白了。我在eclipse中有一个奇怪的配置,在一个公共文件夹中有两个构建配置,其中scriptSRC/scriptMain.cpp->包含实际工作的主函数,scriptSRC/tst/scriptTest.cpp->一组单元测试以确保工作正常。threadCreator.cpp是真正功能的一部分,但我想测试它,所以我试图包括“./path to real src”。。。对于那些知道我在说什么的人来说,我的构建配置是:script:compile what is in scriptSRC and not in scriptSRC/tst scriptTest:compile what in scriptSRC/tst。没有为scriptSRC配置它。谢谢你们。很抱歉我错过了,这更像是人才流失,我已经工作了好几个小时……我通过编辑project->properties->C/C++General->Paths and Symbols->Source Location中的配置来修复它,我移动了在scriptSRC/src中工作的实际构建src和scriptSRC/tst中的测试,并确保测试配置不会找到src的main,但会找到测试所需的其余.cpp文件,我确保src main也需要这些文件。