簡體   English   中英

如何在Code :: Blocks中將靜態庫綁定到動態庫中

[英]How to bind static library in a dynamic one in Code::Blocks

我有這個靜態(.a / .lib)庫,我想將其綁定到我的動態(.dll)中。 可以說靜態庫是libColors.a ,動態庫是SWC.dll 現在,我已經更改了libColors.a項目屬性以創建一個靜態庫(進行構建),並且我沒有找到任何創建的.dll ,只有預期的.o和.a文件。 我切換到SWC.dll項目並更改其屬性以創建動態庫,然后選中該框以創建一個.a文件-鏈接libColors.a它-並創建.dll文件。 (還要注意,我將__declspec(import/export)規范放在其class es上)

現在,我希望此SWC.dll在可執行文件中使用。 但是,當我在可執行文件中僅包含SWC.h文件時,它將獲得大量未定義的引用。 似乎這里有問題,因為我沒有在SWC.h上調用任何函數。 因此,我在.exe生成選項中添加了SWC.a ,現在生成時沒有錯誤。 但是當我運行它時,它說我需要Colors.dll 我想念什么?

您可以使用objdump, CFF ExplorerDependency Walker之類的工具來查看有問題的PE-COFF可執行文件的導入表。

可能的解釋是, Colors項目的編譯方式實際上不是靜態庫。 您可以通過檢查SWC.dll和測試可執行文件的導入表來進行檢查。 您可能會在其中之一中找到Colors.dll的導入條目,以及它試圖導入的功能是什么。

檢查Color.h聲明的數據和函數,並確保它們未在任何地方用__declspec()裝飾。 如果Color.h的函數預處理為諸如'SWC'中的__declspec(dllimport) ,則可能會導致您遇到的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM