crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Проблема с созданием DLL-ки
Litkevich Yuriy
  опции профиля:
сообщение 6.7.2018, 10:30
Сообщение #1


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9642
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 769 раз(а)




Репутация:   94  


Решил разделить приложение на EXE-шник и DLL-ку.
При компиляции DLL-ки столкнулся с проблемой.

Код DLL-ки использует (получает через указатель) некий класс Config, который также используется (и создаётся) основным кодом.

При компиляции DLL-ки возникают ошибки типа: undefined reference to `Config::foo()`, т.к. в проект DLL-ки включены только соответствующие заголовочники.

Как можно собрать проект DLL-ки, чтобы невкомпиливать код класса Config в DLL-ку.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 7.7.2018, 6:55
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2833
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 191 раз(а)




Репутация:   34  


вроде это называется "шаблон проектирования Pimpl"
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 9.7.2018, 9:54
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9642
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 769 раз(а)




Репутация:   94  


Алексей, похоже, что pimpl не помошник, тут ситуация такая:
Допустим в реализации класса Config используется указатель на класс QGraphicsScene, следовательно в проект dll-ки придётся включать модуль Qt Widgets, хотя в самой DLL-ки в этом модуле нет нужды.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 10.7.2018, 0:41
Сообщение #4


Профессионал
*****

Группа: Модератор
Сообщений: 1569
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 211 раз(а)




Репутация:   12  


если твоя библиотека использует какой-то класс, то ты не можешь его не включать в неё. либо, если тебе не нужен весь класс, делай интерфейс, который этот конфиг реализует, и включай его.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 16.7.2018, 11:39