簡體   English   中英

從C ++項目顯式鏈接DLL-(7zip,7z.dll)

[英]Explicit Linking DLL from C++ Project - (7zip, 7z.dll)

我正在嘗試從我的應用程序代碼中使用7zip。 在7zip的網站上,他們說我可以使用7z.dll。 因此,我嘗試從C#引用它,但這沒有用。 因此,我決定編寫一個引用7z.dll的C ++庫,然后可以從C#中引用該庫。

我能夠在我的C ++庫中加載該庫(我認為),並且能夠從C#引用該庫並成功調用方法。

但是,我不知道如何找出7z.dll庫中的方法名稱,以便我可以調用它們。

請幫忙

嗯,漢斯·帕桑(Hans Passant)指出SevenZipSharp,這使我的回答變得毫無用處;-)我將其純粹用於教育目的。 如果其他人已經為您完成了操作,則無需編寫自己的COM互操作包裝器。


我看了看他們的C ++示例(在CPP / 7zip / UI / Client7z下)。 一切都使用COM接口和各種類型的回調完成。

盡管C#具有出色的COM互操作支持,但它需要在C#中重新聲明相關的COM接口,或者可能使用后期綁定的dynamic魔術。 但是,對於7z大小的項目,這兩個選項都相當重要,因此,第二個想法是,最好還是堅持使用C ++ / CLI包裝器方法。

在該示例中,您可以確切地了解它的main NDLL::CLibrary :加載DLL(使用LoadLibrary調用周圍的包裝器類NDLL::CLibrary ),然后獲取指向COM CreateObject函數的指針(通過執行GetProcAddress包裝器)內部)。

獲得CreateObject函數的地址后,可以使用適當的應用程序和接口GUID調用它,以獲取實現它們的對象的實例,然后您可以使用這些對象進行實際的工作。 接口本身在IArchive.h頭文件中聲明。

暫無
暫無

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

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