| 類型 | 副檔名 | 鏈接時機 | 部署方式 |
|---|---|---|---|
| 靜態庫 | .lib (Windows) / .a (Linux/macOS) | 編譯階段 | 程式碼內嵌入執行檔,無外部依賴 |
| 動態庫 | .dll (Windows) / .so (Linux) / .dylib (macOS) | 執行階段載入 | 執行檔體積小、可共用、支援熱更新 |
INCLUDEPATH += $$PWD/../mylib/include
LIBS += -L$$PWD/../mylib/lib -lmylib
#include "mylib.h" 呼叫函式。qmake → Build,符號解析於連結階段完成。// mylib_global.h
#ifdef MYLIB_LIBRARY
# define MYLIB_EXPORT Q_DECL_EXPORT
#else
# define MYLIB_EXPORT Q_DECL_IMPORT
#endif
class MYLIB_EXPORT MyClass { ... };
INCLUDEPATH += $$PWD/../mylib/include
LIBS += -L$$PWD/../mylib/lib -lmylib
.dll 放在執行檔同目錄、系統目錄、或 PATH 環境變數路徑。rpath 或 LD_LIBRARY_PATH。QCoreApplication::addLibraryPath() 或部署腳本 windeployqt/linuxdeployqt 自動收集。# .pro 中區分平台
win32 {
LIBS += -L$$PWD/lib/win32 -lmylib
}
linux {
LIBS += -L$$PWD/lib/linux -lmylib
}
macos {
LIBS += -L$$PWD/lib/macos -lmylib
}
LIBS 路徑錯誤、庫未建置、導出宏未定義、呼叫慣例不符 (__stdcall vs __cdecl)。version script 隱藏內部符號。Qt 整合 C++ 庫核心在 .pro 正確設定 INCLUDEPATH、LIBS,動態庫額外需處理 導出宏 與 執行階段 DLL 尋找路徑。善用 windeployqt/macdeployqt/linuxdeployqt 自動化部署,避免手動遺漏。