Многопоточная программа C, использующая несколько файлов .cpp - PullRequest
0 голосов
/ 31 июля 2011

У меня есть многопоточная программа на C, которая работала хорошо, но была в одном файле main.cpp.

Я переместил поток в другой файл .cpp и добавил его подпись, void * displayScreen (недействительные *);в шапке.Я включил этот заголовок в свой исходный файл main.cpp.

Компиляция работает, но компоновщик возвращает ошибку при попытке вызвать pthread_create (): неопределенная ссылка на `displayScreen (void *) '

Похоже, что он скомпилировал displayScreen (void *) нормально, но не знает, откуда его загрузить.Могу ли я сообщить компоновщику, где его найти, или я делаю это неправильно, пожалуйста?

Большое спасибо.

1 Ответ

0 голосов
/ 31 июля 2011

Добавление только подписи позволяет вам скомпилировать основной блок перевода, но вам все равно придется скомпилировать реализацию функции отдельно и link два:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...