我用QtCreator的向导创建了一个
DLL,在创建过程中已经勾选了QtCore的库,但在DLL中引用了
QObject、
QString后,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
}