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

Multithreading 使用多个.cpp文件的多线程程序C,multithreading,pthreads,Multithreading,Pthreads,我有一个用C编写的多线程程序,该程序运行良好,但只在一个main.cpp文件中 我已将该线程移动到另一个.cpp文件中,并添加了它的签名void*displayScreen(void*),在标题中。我在初始的main.cpp文件中包含了头文件 编译工作正常,但链接器在尝试调用pthread_create()时返回错误:未定义对“displayScreen(void*)”的引用 它看起来很好,但不知道从哪里加载。我有没有办法告诉链接器在哪里找到它,或者我做错了 非常感谢。仅添加签名即可编译主翻译单

我有一个用C编写的多线程程序,该程序运行良好,但只在一个main.cpp文件中

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

编译工作正常,但链接器在尝试调用pthread_create()时返回错误:未定义对“displayScreen(void*)”的引用

它看起来很好,但不知道从哪里加载。我有没有办法告诉链接器在哪里找到它,或者我做错了


非常感谢。

仅添加签名即可编译主翻译单元,但仍需单独编译函数的实现,并将两者链接起来:

main.cpp

void* displayScreen(void*);

int main()
{
  /* .... */
}
void* displayScreen(void*)
{
  /* implementation */
}
显示.cpp

void* displayScreen(void*);

int main()
{
  /* .... */
}
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
链接:

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

发布用于编译和链接的命令,否则无法回答。错误消息毫无意义-链接器不“调用”函数。你记得在编译的目标中包含这两个对象文件吗?对不起,伙计们,我犯了一个愚蠢的错误。我试图编译头文件.h,而不是.cpp代码。我没有注意到我的错误。很抱歉