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