Russian Qt Forum
Ноябрь 23, 2024, 18:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблемы со сборкой приложения  (Прочитано 3040 раз)
chu
Гость
« : Декабрь 13, 2012, 09:33 »

есть 4 файла: aaa.h, aaa.c, bbb.h, bbb.cpp.
Добавляю
Код:
#include "bbb.h"
в aaa.h (или в aaa.c не важно) и использую функции из bbb в aaa, но при компиляции в файле aaa.c выскакивают ошибки
Цитировать
undefined reference to `functionFromBBB'
.
Как с этим бороться?
« Последнее редактирование: Декабрь 13, 2012, 09:35 от chu » Записан
Bepec
Гость
« Ответ #1 : Декабрь 13, 2012, 09:48 »

Использовать только static функции с явным указанием namespace, или же создавать объект класса bbb и вызывать функцию у него.
Соответственно приватные и защищённые функции вам недоступны.
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #2 : Декабрь 13, 2012, 09:51 »

А как ты компиллишь эти файлы? У тебя объектный файл b.o (пример для mingw) создается и линкуется с a.c?
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
chu
Гость
« Ответ #3 : Декабрь 13, 2012, 09:58 »

А как ты компиллишь эти файлы? У тебя объектный файл b.o (пример для mingw) создается и линкуется с a.c?
Компилирую в QtCreator. Объектные файлы создаются. Как узнать что они линкуются?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Декабрь 13, 2012, 10:12 »

Часто так случается когда одни файлы ".cpp" а другие ".с", то есть для них используется С компилятор, и имена не mangled. Можно просто использовать ++ компилятор для всех. Или так

Код
C++ (Qt)
// aa.h
#ifdef _cplusplus
extern "C" {
#endif
 
void MyFunc( void );  // тело в файле aa.c
 
#ifdef _cplusplus
}
#endif
 

« Последнее редактирование: Декабрь 13, 2012, 10:14 от Igors » Записан
chu
Гость
« Ответ #5 : Декабрь 13, 2012, 11:21 »

Спасибо всем! Файл ааа.с переименовал в ааа.срр - проблема решилась:)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.13 секунд. Запросов: 22.