![](/img/trans.png)
[英]Problem with SevenZipSharp. 7z.dll library not found even path to lib defined
[英]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.