已解決。當我添加我的圖書館作爲一個正常的內部庫一切都很好。我沒有做的是在命名空間中定義的一些免費函數上使用MY_LIBRARY_EXPORT宏。不知何故,我以這種方式操作庫導入,以使這些函數正常工作,但是按照此處所述的其他方式破壞了它。在Qt Creator中與mingw共享庫給出未定義的參考錯誤
我還沒有能夠使用Qt Creator嚮導使用共享庫。我嘗試過使用動態鏈接,但失敗了,不能用作靜態庫。在這兩種情況下,我都會收到一個'undefined reference to'IMP _ *'錯誤。
這裏是我的專業文件。它們都在同一個SUB_DIR父項目中,並且路徑是正確的。
庫親文件的相關部分:
TARGET = Prospec
TEMPLATE = lib
CONFIG += staticlib
QMAKE_CXXFLAGS += -std=c++11
DEFINES += PROSPEC_LIBRARY
用戶.pro文件的全部內容。 (ProspecTest是Prospec的單元測試項目)。
#-------------------------------------------------
#
# Project created by QtCreator 2013-12-12T15:04:30
#
#-------------------------------------------------
QT += testlib
QT -= gui
TARGET = prospectest
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
QMAKE_CXXFLAGS += -std=c++11
SOURCES += prospectest.cpp \
mltest.cpp \
convertertest.cpp \
numericitemtest.cpp
DEFINES += SRCDIR=\\\"$$PWD/\\\"
HEADERS += \
utilities.h \
mltest.h \
convertertest.h \
numericitemtest.h
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../Prospec/release/ -lProspec
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../Prospec/debug/ -lProspec
INCLUDEPATH += $$PWD/../Prospec/debug
DEPENDPATH += $$PWD/../Prospec/debug
win32:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/../Prospec/release/libProspec.a
else:win32:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/../Prospec/debug/libProspec.a
# Boost
INCLUDEPATH += C:/boost/boost_1_55_0/
LIBS += "-LC:/boost/boost_1_55_0/stage/lib/"
編輯:未定義的引用錯誤只發生在我調用源文件中的功能。例如,如果我構造一個庫對象,我會得到這個錯誤,但是如果我將這個對象構造函數移動到一個頭文件中,那麼編譯就可以。現在我不確定問題是由於Qt環境引起的,還是我一般不瞭解共享庫。
您提供的信息是不夠的,請至少提供一個最小和可建立的問題的例子。 – George
確切的錯誤信息也會有幫助。 – George