0
目前我有一個應用程序和一個(靜態)庫,都是用Qt編寫的。作爲構建系統,我使用cmake。我將庫與target_link_libraries
鏈接到可執行文件,一切工作正常(我有一個文件/可執行文件)。在應用程序和cmake中使用Qt共享庫的常見方法
但現在我想使用共享庫。創建一個共享庫add_library
和關鍵字SHARED
的作品,但我有點困惑的方式,如何加載共享庫。我看到了兩個 「辦法」:
- 寫一個庫,並使用
Q_DECL_EXPORT
/Q_DECL_IMPORT
。他們使用QLibrary
加載庫並使用類型轉換來解析所有(C)函數 - 編寫庫並將頭文件包含在應用程序中。共享庫通過cmake命令
target_link_libraries
「傳遞」給可執行文件。他們不使用QLibrary來加載庫。
現在我有幾個問題:
- 什麼是普通(「正常」)的方式來加載共享庫?使用__cdecl(方法1)將所有C++方法導出到C函數或包含頭文件(方式2)?其他方案?
- 與方式2(包含標題)相關 - 庫如何加載?由操作系統?如果我移動庫,應用程序無法找到庫 - >在運行時加載的庫?
- 有沒有一種方法來加載一個庫,而不包括頭或在編譯時使用它(運行時加載庫)?我看了有一種方法,但它不是那麼容易
我希望我的問題是明確的,而不是「noobish」,否則請寫一個評論