qtcreator - обьектный файл с общими реализациями

Модератор: Модераторы разделов

Ответить
Аватара пользователя
sunjob
Сообщения: 330
Контактная информация:

qtcreator - обьектный файл с общими реализациями

Сообщение sunjob »

qtcreator - проект из шаблон-визарда qt-widgets, довешиваю "свои плюшки"...

есть мини-библиотека, состоит из 3х исходников:

Код: Выделить всё

- lib1 c/h (использует lib2)
- lib2 c/h (более низкоуровневая)
- func c/h (рутина, используется обоими lib1 & lib2)
при написании библиотеки извратился простым подключеним "реализаций" вместе с "хедерами"
сборка/отладки библиотеки проходит без проблем

теперь хочу "правильно" добавить библиотеку в qtcreator-проект (хедеры отдельно, реализация отдельно)

если просто подключить в *.pro-файле

Код: Выделить всё

HEADERS += ini/lib1.h
HEADERS += ini/lib2.h
HEADERS += ini/func.h
SOURCES += ini/lib1.c
SOURCES += ini/lib2.c
SOURCES += ini/func.c
то получаем "анрезолв/func", что и не удивительно.

если добавляем "потерянные" рутины (func.o) ("всевозможными" методами) - то получаем коллизию/множественное определение, (в исходнике и в обьектнике), что тоже не удивительно.

как правильно подключить библиотеку? точнее, не саму библиотеку, а обьектный файл с общими реализациями рутины
(понятное дело, нужно без установки библиотеки в систему :о)

...

Код: Выделить всё

qtcreator-3.1.2
qt-4.8.7
если я ошибаюсь, то поправьте а не критикуйте :о)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20792
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: qtcreator - обьектный файл с общими реализациями

Сообщение Bizdelnick »

Я ничего не понял.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3667
ОС: Mandriva => Gentoo (~amd64)
Контактная информация:

Re: qtcreator - обьектный файл с общими реализациями

Сообщение devilr »

Я тоже. Но, есть подозрение, что надо просто правильно использовать "пространство имён". Если получаем "получаем коллизию/множественное определение", то явно пересекаемся с определениями/описаниями функций в обоих lib.
Возможно, что я совсем не о том...
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2645
ОС: Gentoo

Re: qtcreator - обьектный файл с общими реализациями

Сообщение ormorph »

Самому интересно, как подключить объектный файл от си в c++.
Боюсь что не все так просто, придется переделывать и объявлять в extern c.
Так просто не получится.
Хотя может я чего не понимаю.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20792
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: qtcreator - обьектный файл с общими реализациями

Сообщение Bizdelnick »

ormorph писал(а):
30.06.2020 11:02
Самому интересно, как подключить объектный файл от си в c++.
У ТСа всё на C, вроде как. А подключить несложно.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2645
ОС: Gentoo

Re: qtcreator - обьектный файл с общими реализациями

Сообщение ormorph »

Bizdelnick писал:
30.06.2020 11:06
У ТСа всё на C, вроде как. А подключить несложно.
Хм..
sunjob писал(а):
29.06.2020 21:01
qtcreator - проект из шаблон-визарда qt-widgets,
Судя по сообщению то он навешивает плюшки из си в C++. qt-widgets только на C++. Вот и получается балалайка, собирается скорее всего все это компилятором C++.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20792
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: qtcreator - обьектный файл с общими реализациями

Сообщение Bizdelnick »

ormorph писал(а):
30.06.2020 11:16
Судя по сообщению то он навешивает плюшки из си в C++.
Судя по сообщению у него файлы имеют суффикс .c.
ormorph писал(а):
30.06.2020 11:16
Вот и получается балалайка, собирается скорее всего все это компилятором C++.
Здесь не кружок народных инструментов, и гадать ни к чему. qmake выбирает компилятор по суффиксу.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2645
ОС: Gentoo

Re: qtcreator - обьектный файл с общими реализациями

Сообщение ormorph »

Ну тогда оч интересно чем это закончится,. Как вариант можно собрать статическую библиотеку и уже ее подключить, раз уж с динамической все ок.
А так не знаю в этой версии qt-creator работает ли добавить исходные файлы или нет, по правой кнопке мыши. Обычно оч редко нужно править файл проекта для этого.
Спасибо сказали:
Аватара пользователя
sunjob
Сообщения: 330
Контактная информация:

Re: qtcreator - обьектный файл с общими реализациями

Сообщение sunjob »

стоп стоп... ребяяятааа! вы не о том ... ну или как обычно, я все испортил... и тему вашу обломал и изначально все обьяснил недостаточно понятно

проблема была изначально в том (попробую быстренько обьяснить, если не получится, то, чуть позже более подробно)

есть некоторый функционал, реализован на трех модулях (три набора файлов *.c - реализация и *.h - хедеры)

Код: Выделить всё

- lib1 c/h (использует lib2)
- lib2 c/h (более низкоуровневая)
- func c/h (рутина, используется обоими lib1 & lib2)
ну, собственно, вот и все! это надо добавить в проект qtcreator трушными методами, т.е. не делая спец. мейкфайл итд, что бы qtcreator сам все это переваривал

если подключить "стандартно" - то lib1 & lib2 - не будут видить реализаций методов из func
если добавить обьектник func - линковщий наткнется на коллизии...

вот и был вопрос как это все правильно, просто и без гемора сделать
на других форумах предлагают ректально-моргинальные способы... :о)

я решаю трушно для себя - включением хедеров и реализаций

со всеми очевидными вытекающими для меня плюсами (в данном случае, в данном контексте)
- собирается все и сразу в один модуль
- изменение, дополнения, доработка любого из файла будет приняты сразу
- итд итп...
- мнимые накладные расходы на сборку в данном случае ничтожны (я бы сказал смешны)

ну вот, как-то так...

спасибо
если я ошибаюсь, то поправьте а не критикуйте :о)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20792
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: qtcreator - обьектный файл с общими реализациями

Сообщение Bizdelnick »

sunjob, не надо напевать нам по телефону Карузо. Показывайте код и лог сборки с ошибками. Пока я могу ткнуть пальцем в небо и предположить, что, может быть, в каком-то из заголовочников (func.h?) у Вас не только объявляется, но и определяется какое-то нечто (переменная без extern?). А может быть, Вы не заинклюдили какой-то заголовочник туда, где он нужен. Или и то, и другое. В общем, прозреваю очень глупую ошибку, не имеющую ни малейшего отношения к qtcreator с его хозяйством.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2645
ОС: Gentoo

Re: qtcreator - обьектный файл с общими реализациями

Сообщение ormorph »

sunjob писал(а):
30.06.2020 20:02
если подключить "стандартно" - то lib1 & lib2 - не будут видить реализаций методов из func
если добавить обьектник func - линковщий наткнется на коллизии...
Оч похоже на какую то циклическую зависимость, тут нужно смотреть объявление хедеров, как оно объявляется. Скорее всего где то используются callback функции, либо еще что. В Qt обычно проблемы с передачей решаются с помощью сигналов и слотов, хотя они работают медленней, но зато меньше проблем с проработкой. Тут уж можно только гадать что не так.
Спасибо сказали:
Ответить