靜態庫與動態庫相互呼叫

2021-09-08 14:20:34 字數 929 閱讀 8677

測試場景,test,lib1,lib2,dll1,dll2,分為下面四種情況:

1、test->lib1->lib2

lib1編譯自己的**,對lib2的部分,只需要lib2的標頭檔案,對lib2的**實現,使用佔位符關聯。

生成test連線的時候,把lib1的**實現包含進來,再遞迴,把lib1中關聯lib2的**實現也包含進來。

執行test的時候,不再需要lib1和lib2。

2、test->lib1->dll2

lib1編譯自己的**,對dll2的部分,只需要dll2的標頭檔案,對dll2的**實現,使用佔位符關聯。

生成test連線的時候,把lib1的**實現包含進來,但是,dll2中的**不包含進來。

執行test的時候,不需要lib1,但是需要dll2【不需要dll的lib檔案】

3、test->dll1->lib2

dll1編譯自己的**,對lib2的部分,需要lib2的標頭檔案和實現,即lib2,把lib2的**實現包含到dll1中

生成test連線的時候,dll1中的**不包含進來,並且不再需要lib2。

【可以這樣測試,生成lib2,生成dll1,生成test.exe,刪除lib2,刪除test.exe,再生成test.exe,可以生成成功。說明生成test.exe,連線的時候根本不需要lib2,。也就是說,靜態庫會被連線到動態庫或者exe中,但是不會被連線到其他的靜態庫中】

執行test的時候,需要dll1,但是不需要lib2

4、test->dll1->dll2

dll1編譯自己的**,對dll2的部分,需要dll2的標頭檔案和lib檔案,對dll2的**實現,使用佔位符關聯。

生成test連線的時候,test需要dll1的lib,dll1需要dll2的lib,但是**實現都不會包含在test中。

執行test的時候,需要dll1和dll2【不需要他們的lib】

靜態庫與動態庫相互呼叫

測試場景,test,lib1,lib2,dll1,dll2,分為下面四種情況 1 test lib1 lib2 lib1編譯自己的 對lib2的部分,只需要lib2的標頭檔案,對lib2的 實現,使用佔位符關聯。生成test連線的時候,把lib1的 實現包含進來,再遞迴,把lib1中關聯lib2的 ...

動態庫與靜態庫相互呼叫

解決了困惑我已久的問題 動態庫和靜態庫相互呼叫的問題。自 測試場景,test,lib1,lib2,dll1,dll2,分為下面四種情況 1 test lib1 lib2 lib1編譯自己的 對lib2的部分,只需要lib2的標頭檔案,對lib2的 實現,使用佔位符關聯。生成test連線的時候,把li...

靜態庫和動態庫的相互呼叫

在windows程式設計中,經常會遇到靜態庫里呼叫動態庫的問題。具體方法 1,編寫乙個動態鏈結庫,生成。2,編寫乙個靜態鏈結庫,裡面包含步驟1生成的動態鏈結庫的標頭檔案和lib,dll。3,在呼叫該靜態鏈結庫時,將步驟2中的靜態鏈結庫的標頭檔案,lib檔案以及動態庫的標頭檔案,lib,dll檔案放在...