Russian Qt Forum

Qt => Вопросы новичков => Тема начата: unkeep от Декабрь 02, 2013, 10:52



Название: [РЕШЕНО] как собрать библиотеку с одним лишь классом-интерфейсом?
Отправлено: unkeep от Декабрь 02, 2013, 10:52
как собрать библиотеку с одним лишь классом-интерфейсом?

IModulesService.h
Код
C++ (Qt)
#pragma once
 
namespace ModulesEditor {
namespace BLL {
 
class  IModulesService
{
public:
   virtual ~IModulesService() {}
   virtual void Test() = 0;
};
 
 
} // namespace BLL
} // namespace ModulesEditor
 
Q_DECLARE_INTERFACE(ModulesEditor::BLL::IModulesService, "ModulesService/1.0")
 

.pro
Код
C++ (Qt)
QT       -= gui
 
TARGET = ModulesEditorBLL
TEMPLATE = lib
 
DEFINES += MODULESEDITOR_BLL_LIBRARY
 
SOURCES +=
 
HEADERS += IModulesService.h\
       ModulesEditor_BLL_global.h
 
unix:!symbian {
   maemo5 {
       target.path = /opt/usr/lib
   } else {
       target.path = /usr/lib
   }
   INSTALLS += target
}

IModulesService.cpp отсутствует


:-1: предупреждение: LNK4001: no object files specified; libraries used
:-1: предупреждение: LNK4068: /MACHINE not specified; defaulting to X86
:-1: ошибка: LNK2001: unresolved external symbol __DllMainCRTStartup@12
debug\ModulesEditorBLL.dll:-1: ошибка: LNK1120: 1 unresolved externals


Название: Re: как собрать библиотеку с одним лишь классом-интерфейсом?
Отправлено: Old от Декабрь 02, 2013, 10:54
как собрать библиотеку с одним лишь классом-интерфейсом?
Никак. В этом нет смысла. Достаточно одного хедера.


Название: Re: как собрать библиотеку с одним лишь классом-интерфейсом?
Отправлено: unkeep от Декабрь 02, 2013, 11:14
я подсмотрел реализацию проекта на другом языке, там проект состоял из подпроектов, где каждый подпроект-слой на выходе давал библиотеку. Одним из таких слоёв был слой бизнес логики, состоящий только из интерфейса.

Если я хочу иметь несколько реализаций этого интерфейса, мне придётся включать этот хедер в каждую из них, вместо использования библиотеки?


Название: Re: как собрать библиотеку с одним лишь классом-интерфейсом?
Отправлено: Old от Декабрь 02, 2013, 11:18
Если я хочу иметь несколько реализаций этого интерфейса, мне придётся включать этот хедер в каждую из них, вместо использования библиотеки?
Достаточно сделать интерфейсы общими для всех слоев (вынести их в отдельную директорию, например) и просто подключать их в нужные исходники include.


Название: Re: как собрать библиотеку с одним лишь классом-интерфейсом?
Отправлено: unkeep от Декабрь 02, 2013, 11:23
а если я хочу использовать этот интерфейс в разных приложениях?


Название: Re: как собрать библиотеку с одним лишь классом-интерфейсом?
Отправлено: Old от Декабрь 02, 2013, 11:26
а если я хочу использовать этот интерфейс в разных приложениях?
Пожалуйста. :)
Просто включайте эти хедеры в нужные файлы.
Пока в интерфейсе нет реальных методов, класть в библиотеку попросту нечего.


Название: Re: как собрать библиотеку с одним лишь классом-интерфейсом?
Отправлено: unkeep от Декабрь 02, 2013, 11:39
я решил отойти от идеи интерфейса в пользу абстрактного класса унаследованного от QObject


Название: Re: как собрать библиотеку с одним лишь классом-интерфейсом?
Отправлено: xokc от Декабрь 02, 2013, 14:04
я решил отойти от идеи интерфейса в пользу абстрактного класса унаследованного от QObject
Совсем немного осталось, чтобы дойти таки до Qt Plugin System.