2013-07-18 4 views
-1

Этот класс MailHandler существует в решении MailTest, которое я использую для отправки сигналов классу MailCom в решении MailResponse. Моя проблема связана с созданием объекта класса MailHandler в классе MailCom, который находится в другом проекте и выполняет операции здесь. Каков наиболее эффективный способ установления соединения без изменения проекта MailTest в lib или DLL?Как использовать класс из другого проекта в C++ с Qt?

Мне нужно связать правильный путь, но я не уверен, какие настройки важны в этом случае. Это текущая ошибка я получаю при попытке создать экземпляр объекта MailHandler:

1>  Creating library ..\..\bin\pvc6d.lib and object ..\..\bin\pvc6d.exp 
1>CMailCom.obj : error LNK2019: unresolved external symbol "public: class QStringList __thiscall MailHandler::ReturnAllFunctions(void)" ([email protected]@@[email protected]@XZ) referenced in function "public: __thiscall pvc::hardwarecom::CMailCom::CMailCom(class pvc::data::CData &,class pvc::data::CRudderServo *,class pvc::data::CPropulsionManager *,class QGraphicsScene *)" ([email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@Z) 
1>CMailCom.obj : error LNK2019: unresolved external symbol "public: __thiscall MailHandler::MailHandler(class QObject *)" ([email protected]@[email protected]@@@Z) referenced in function "public: __thiscall pvc::hardwarecom::CMailCom::CMailCom(class pvc::data::CData &,class pvc::data::CRudderServo *,class pvc::data::CPropulsionManager *,class QGraphicsScene *)" ([email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@Z) 
1>..\..\bin\pvc6d.exe : fatal error LNK1120: 2 unresolved externals 

ответ

0

Если вы хотите использовать класс из внешнего проекта, вы можете попытаться #include его заголовочный файл (MailHandler.h, MailHandler.hxx и т. Д.). Я предполагаю, что ты сделал. Очевидно, что есть также исходный файл (MailHandler.cpp, MailHandler.cxx). Вы можете попробовать добавить этот файл в свой текущий проект. Если вам повезет, он компилирует и связывает, и ваши нерешенные внешние пользователи уходят. Скорее, исходный файл имеет другие зависимости и не компилирует/не связывает сразу.

Это скорее хак - не надежное долгосрочное решение. Лучше скопировать файл с его зависимостями в ваш проект. . Лучше всего извлечь нужные классы в отдельный проект (т. Е. Создать lib или dll), который ваш проект и что другое решение «MailTest» используется в качестве независимого клиента ,

+0

Вещь, класс MailHandler использует отдельный класс с аппаратным подключением и запускает SDL, а SDL и Qt могут вмешиваться. Вот почему файлы должны запускаться в разных проектах с функциональностью SDL, запускающей собственный поток. – user2552706

0

Вам не хватает правильных библиотек. Компилятор не знает о вызываемых функциях, добавьте LIBS += -Lpath/to/lib -lthelib в свой файл pro.

Смежные вопросы