1

我是一名 .NET 微软人,试图投奔 Linux。我需要学习如何在 C++ 中构建多线程代码。但我点卡在第一个坑洼......我找到了这个例子:

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

void *print_message_function( void *ptr );

main()
{
     pthread_t thread1, thread2;
     const char *message1 = "Thread 1";
     const char *message2 = "Thread 2";
     int  iret1, iret2;

     iret1 = pthread_create( &thread1, NULL, print_message_function, (void*) message1);
     iret2 = pthread_create( &thread2, NULL, print_message_function, (void*) message2);

     pthread_join( thread1, NULL);
     pthread_join( thread2, NULL);

     printf("Thread 1 returns: %d\n",iret1);
     printf("Thread 2 returns: %d\n",iret2);
     exit(0);
}

void *print_message_function( void *ptr )
{
     char *message;
     message = (char *) ptr;
     printf("%s \n", message);
}

但我不能在 Eclipse 中运行它。我收到错误:

Description Resource    Path    Location    Type
make: *** [TestMySQL] Error 1   TestMySQL           C/C++ Problem
undefined reference to `pthread_create' TestMySQL.cpp   /TestMySQL/src  line 16 C/C++ Problem
undefined reference to `pthread_create' TestMySQL.cpp   /TestMySQL/src  line 17 C/C++ Problem
undefined reference to `pthread_join'   TestMySQL.cpp   /TestMySQL/src  line 23 C/C++ Problem
undefined reference to `pthread_join'   TestMySQL.cpp   /TestMySQL/src  line 24 C/C++ Problem

非常感谢!

4

1 回答 1

1

转到项目-> 属性导航到 C/C++ 构建-> 设置选择 GCC C++ 链接器将“-pthread”添加到所有选项框。

解决了!

感谢所有评论者为我指出正确的方向。

于 2013-11-07T12:55:16.583 回答