我刚刚安装了Qt 4.7.4并试图制作一个使用Qt DLL的简单Qt应用程序。我像往常一样通过ifdef在DLL中的类中添加了导出/导入,但是在编译App时,我琢磨了未解析的引用。我也设置该应用程序依赖于DLL。将Qt DLL链接到Qt App - 未解决的引用
以下是主要文件:
Lib.pro
QT -= gui
TARGET = Lib
TEMPLATE = lib
DEFINES += LIB_LIBRARY
SOURCES += lib.cpp
HEADERS += lib.h\
Lib_global.h
symbian {
MMP_RULES += EXPORTUNFROZEN
TARGET.UID3 = 0xE10C4E25
TARGET.CAPABILITY =
TARGET.EPOCALLOWDLLDATA = 1
addFiles.sources = Lib.dll
addFiles.path = !:/sys/bin
DEPLOYMENT += addFiles
}
unix:!symbian {
maemo5 {
target.path = /opt/usr/lib
} else {
target.path = /usr/lib
}
INSTALLS += target
}
App.pro
QT += core gui
TARGET = App
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
lib.h
#ifndef LIB_H
#define LIB_H
#include "Lib_global.h"
#include <QString>
class LIBSHARED_EXPORT Lib {
public:
Lib();
~Lib();
QString Hello(QString a);
};
#endif // LIB_H
Lib_global.h
#ifndef LIB_GLOBAL_H
#define LIB_GLOBAL_H
#include <QtCore/qglobal.h>
#if defined(LIB_LIBRARY)
# define LIBSHARED_EXPORT Q_DECL_EXPORT
#else
# define LIBSHARED_EXPORT Q_DECL_IMPORT
#endif
#endif // LIB_GLOBAL_H
有什么不对的代码?为什么它是未解决的参考? 在应用程序中,我只包含“../Lib/lib.h”并尝试使用该类。
不,没有帮助。它成功地触及lib编译并生成相同消息的liblib.a文件。 – flashnik
更新了我的回复 – Adam
我更喜欢的是设置(导出)包含项目目录绝对路径的环境变量。然后我将它用于包含路径和lib路径的.pro文件中: 'INCLUDEPATH + = $(PROJECT_HOME)/ include LIBS + = -L $(PROJECT_HOME)/ lib LIBS + = -lsomeLib'。这样你就不会遇到pro文件中的相对路径问题 – azf