您好我是新来的C#世界。 我不得不使用它,因为在xceedzip.dll压缩数据从组播Feed中的通过依赖。 黑客一起一些代码,用于接收进料后,我面临的一个障碍在调用此DLL。 从我的理解,我需要使用“的System.Reflection”并调用DLL。
目前我的源代码和DLL驻留在同一目录中。 代码编译成功。
Assembly ass = Assembly.Load("XceedZip");
我得到的运行期间,System.BadImageFormatException:无法加载文件或程序集“XceedZip”或其依赖条件之一。 该模块应包含一个程序集清单。
请帮帮忙,谢谢
#
好了感谢所有您的答复,我有以下装入我的环境中TLBIMP命令的dll的工作版本。 我面临着与解压缩方法签名的麻烦。 我需要提供一个“REF对象”和“out对象”作为源(压缩)和目的地(未压缩)的对象。 我试图加载字节数组到这些位置,但它抛出了我一个无效的参数错误。 帮助的“参考对象”和“out对象”感激...
问题解决了,感谢所有
我怀疑这个DLL不是托管程序集,但包含本地代码。 该Assembly.Load
只应与管理组件一起使用。 如果你需要从非托管代码调用函数可以使用的P / Invoke 。 该过程包括在确定要调用的非托管功能的托管包装。
例如,如果你想调用的MessageBox本地函数(其实你永远不会需要做到这一点,因为已经有一个管理相当,但它应该是罚款,这个演示的目的),你可以写一个包装:
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern MessageBoxResult MessageBox(IntPtr hWnd, String text, String caption, int options);
然后调用它:
MessageBox(IntPtr.Zero, "Text", "Caption", 0);
你将不得不做同样的事情与被包含在DLL中的非托管函数。 您必须查看文档,看看具体的非托管签名,这将帮助你定义托管包装。
尝试清理解决方案然后重新编译。 这项工作完全没有给我。
从我的理解,我需要使用“的System.Reflection”并调用DLL。
不,你不会。 你可以在你的项目中添加对DLL的引用(因为它是一个托管程序集 ),然后使用在DLL中的类和它们的方法。
你会收到什么类和方法使用,并且他们所期望的参数文件。
我不会支付€640第一年和€320每次年仅仅ZIP库,但是这是一个有点offtopic可能。