• 4124阅读
  • 0回复

[提问]Qt Creator创建DLL的问题 [复制链接]

上一主题 下一主题
离线isml
 

只看楼主 倒序阅读 楼主  发表于: 2012-03-07
我用QtCreator的向导创建了一个DLL,在创建过程中已经勾选了QtCore的库,但在DLL中引用了QObjectQString后,Link的时候报找不到符号
testqtdll2.obj:-1: 错误:LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QString::~QString(void)" (__imp_??1QString@@QAE@XZ),该符号在函数 "int __cdecl Add(int,int)" (?Add@@YAHHH@Z) 中被引用
testqtdll2.obj:-1: 错误:LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: static class QString __cdecl QObject::tr(char const *,char const *)" (__imp_?tr@QObject@@SA?AVQString@@PBD0@Z),该符号在函数 "int __cdecl Add(int,int)" (?Add@@YAHHH@Z) 中被引用


测试代码如下:

#include <QObject>
#include <QString>

#include "testqtdll2.h"

int TESTQTDLL2SHARED_EXPORT Add(int a, int b)
{
    QString s = QObject::tr("中文测试");
    return a + b;
}

工程pro文件如下:
#-------------------------------------------------
#
# Project created by QtCreator 2012-03-07T12:32:00
#
#-------------------------------------------------
QT       -= gui
QT       += core
CONFIG += dll
TARGET = TestQtDLL2
TEMPLATE = lib
DEFINES += TESTQTDLL2_LIBRARY
SOURCES += testqtdll2.cpp
HEADERS += testqtdll2.h\
        TestQtDLL2_global.h
symbian {
    MMP_RULES += EXPORTUNFROZEN
    TARGET.UID3 = 0xE746BF96
    TARGET.CAPABILITY =
    TARGET.EPOCALLOWDLLDATA = 1
    addFiles.sources = TestQtDLL2.dll
    addFiles.path = !:/sys/bin
    DEPLOYMENT += addFiles
}
unix:!symbian {
    maemo5 {
        target.path = /opt/usr/lib
    } else {
        target.path = /usr/lib
    }
    INSTALLS += target
}

快速回复
限100 字节
 
上一个 下一个