多线程程序C使用多个.cpp文件

时间:2011-07-30 22:07:06

标签: multithreading pthreads

我在C中有一个多线程程序,它运行良好,但是在一个main.cpp文件中。

我已将该线程移动到另一个.cpp文件中并添加了它的签名,void * displayScreen(void *); ,在标题中。我在最初的main.cpp文件中包含了标题。

编译工作但链接器在尝试调用pthread_create()时返回错误:未定义引用`displayScreen(void *)'

它看起来好像编译了displayScreen(void *),但不知道从哪里加载它。有没有办法让我告诉链接器在哪里找到它或者我做错了吗?

非常感谢。

1 个答案:

答案 0 :(得分:0)

单独添加签名可让您编译主翻译单元,但您仍需要单独编译该函数的实现并链接这两个:

<强>的main.cpp

void* displayScreen(void*);

int main()
{
  /* .... */
}

<强> display.cpp

void* displayScreen(void*)
{
  /* implementation */
}

<强>编译:

g++ -O2 -o main.o main.cpp
g++ -O2 -o display.o display.cpp

链接:

g++ -o myprogram main.o display.o -lpthread -s