当前位置: 首页 > 知识库问答 >
问题:

对“pthread_cancel”的未定义引用

秋飞鸾
2023-03-14
class T{
private:
    pthread_t thread;
public:
    void start(){
        pthread_create(&thread,NULL,&run,this);
    }
    void destroy_thread(){
        pthread_cancel(thread);
    }
    static void* run(void*){}
    ~Thread(){
        destroy_thread();
    }
};
class A:T{
    A(){
      start();
    }
}
int main(){
  A a;
  return 0;
}
g++ -c T.cpp A.cpp Main.cpp -lpthread 
g++ -o out *.o

错误:未定义对'pthread_cancel'的引用

共有1个答案

凌声
2023-03-14

请执行以下操作:

g++ -pthread -c T.cpp A.cpp Main.cpp
g++ -pthread -o out *.o

-lpthread是一个链接器标志,它只在链接时使用,而不是在编译时使用,所以在有它的地方是不正确的--链接部分发生在第二步中。

而且通常不使用-lpthread。使用-pthread进行编译和链接。

 类似资料:
  • 我正在尝试使用AassetManager从android apk访问资产。然而,尽管我已经包含了asset_manager.h和asset_manager_jni.h,但我仍然得到了“对aassetmanager_fromjava的未定义引用”。其他来自asset_manager.h的函数,如AAssetManager_openDir(mgr,"“)等也不能被引用。 以下是完整的代码 这段代码在一

  • 问题内容: 我正在使用Linux,并且具有以下文件: 该函数在中声明和定义。我需要在中使用该函数,因此我将该函数声明为 在。 但是,在编译过程中,我得到了错误 怎么了? 谢谢。 预计到达时间:多亏了我收到的答案,我现在有了以下内容: 在fileA.h中,我有 在fileA.c中,我有 在fileB.h中,我有 在fileB.cpp中,我有 但是,我现在有错误 问题答案: 如果您确实是使用C而不是C

  • 问题内容: 我正在尝试使用mingw的gcc与我的MSVC构建的python26_d一起运行Rabbyt库的调试版本。我有很多未定义的引用,这导致我创建了libpython26_d.a,但是仍然存在一个未定义的引用。谷歌搜索给我: http://www.techlists.org/archives/programming/pythonlist/2003-03/msg01035.shtml 但是-r

  • 如有任何线索将不胜感激。 换了cmakelists后我又遇到了一个问题

  • 我只是想让OpenGL在我的机器(Windows 7 64位)上使用GLFW工作。 我得到了单一的链接器错误: 我试图编译的代码是最简单的(在Test.cpp文件中)。 我正在使用一个简单的Makefile来尝试编译: 其他信息: 使用g编译(MinGW32) lib文件夹包含glfw3.dll、libglfw3. a和libglfw3dll. a(从GLFW网站下载的Win32版本-Window

  • 问题内容: 我正在尝试在操作系统上设置libusb API。我在libusb.org上下载了libusb api。我遵循了标准的安装过程: 然后,我启动了Eclipse C / C ++,并从Internet上的教程中复制了一些代码。但是当尝试构建它时,我得到以下输出: 我在/ lib中有libusb.so,在/ usr / local / include中也有usb.h,在/ usr / loc