2013-07-18 18 views
-1

解决方案MailTest中有这个类MailHandler,我使用它将信号发送到解决方案MailResponse中的类MailCom。我的问题是围绕MailCom类中的MailHandler类创建一个对象,该对象位于不同的项目中,并从此处执行操作。在没有将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

如果你想使用一个外部项目的一类,你可以尝试#包括其头文件(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文件中。

相关问题