我剛剛安裝了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