开发者

Multithreaded program C using multiple .cpp files

开发者 https://www.devze.com 2023-03-24 16:16 出处:网络
I have a multi threaded program in C that was working well 开发者_Python百科but was in one single main.cpp file.

I have a multi threaded program in C that was working well 开发者_Python百科but was in one single main.cpp file.

I have moved the thread in another .cpp file and added it's signature, void* displayScreen(void*); , in the header. I include the header in my initial main.cpp file.

Compiling works but the linker returns an error when trying to call pthread_create(): undefined reference to `displayScreen(void*)'

It looks like it compiled displayScreen(void *) fine but does not know where to load it from. Is there a way for me to tell the linker where to find it or am I doing it wrong please?

Thank you very much.


Adding the signature alone lets you compile the main translation unit, but you still have to compile the implementation of the function separately and link the two:

main.cpp

void* displayScreen(void*);

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

display.cpp

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

Compile:

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

Link:

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

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号