-1

解决方案MailTest中有这个类MailHandler,我用它来向解决方案MailResponse中的MailCom类发送信号。我的问题围绕在 MailCom 类中创建 MailHandler 类的对象,该类位于不同的项目中,并从这里进行操作。在不将 MailTest 项目修改为 lib 或 DLL 的情况下建立连接的最有效方法是什么?

我需要链接到正确的路径,但我不确定在这种情况下哪些设置很重要。这是我在尝试实例化 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)" (?ReturnAllFunctions@MailHandler@@QAE?AVQStringList@@XZ) referenced in function "public: __thiscall pvc::hardwarecom::CMailCom::CMailCom(class pvc::data::CData &,class pvc::data::CRudderServo *,class pvc::data::CPropulsionManager *,class QGraphicsScene *)" (??0CMailCom@hardwarecom@pvc@@QAE@AAVCData@data@2@PAVCRudderServo@42@PAVCPropulsionManager@42@PAVQGraphicsScene@@@Z)
1>CMailCom.obj : error LNK2019: unresolved external symbol "public: __thiscall MailHandler::MailHandler(class QObject *)" (??0MailHandler@@QAE@PAVQObject@@@Z) referenced in function "public: __thiscall pvc::hardwarecom::CMailCom::CMailCom(class pvc::data::CData &,class pvc::data::CRudderServo *,class pvc::data::CPropulsionManager *,class QGraphicsScene *)" (??0CMailCom@hardwarecom@pvc@@QAE@AAVCData@data@2@PAVCRudderServo@42@PAVCPropulsionManager@42@PAVQGraphicsScene@@@Z)
1>..\..\bin\pvc6d.exe : fatal error LNK1120: 2 unresolved externals
4

2 回答 2

0

如果你想使用外部项目的一个类,你可以尝试#include它的头文件(MailHandler.h、MailHandler.hxx等)。我假设这就是你所做的。显然还有一个相应的源文件(MailHandler.cpp、MailHandler.cxx)。您可以尝试将此文件添加到您当前的项目中。如果你幸运的话,它会编译和链接,你未解决的外部问题就会消失。源文件更有可能具有其他依赖项并且不会立即编译/链接。

这更像是一种 hack - 不是一个强大的长期解决方案。最好将文件及其依赖项复制到您的项目中 最好将所需的类提取到您的项目和其他解决方案“MailTest”用作独立客户端的单独项目中(即创建一个 lib 或 dll)。

于 2013-07-18T08:55:13.610 回答
0

您缺少正确的库。链接器不知道调用的函数,添加LIBS += -Lpath/to/lib -lthelib到您的 pro 文件中。

于 2013-07-18T10:24:05.593 回答