我获得了一个旧的dll以及通过C#.NET 3.5访问它的任务。我相信这个dll最初是用VB6构建的,但并不是正面的。除了如何在VB6中使用它的示例之外,没有dll的文档或源代码。我已经能够通过VB.NET 3.5成功访问它。用于访问的示例代码如下所示:
myLib = CreateObject("MyLib.api")
myConnection = myLib.CreateObject("NameOfConnectionObject")
myConnection.do_something("abc")
从库中创建了几个不同的对象,并且所有这些对象都有不同的方法。我尝试使用不同的dll读取工具,但所有导出方法都显示为垃圾。我也尝试在visual studio中导入dll,但是我收到一条错误,指出dll不可访问和/或不是COM对象或程序集。所以,我只知道旧文档中稀疏的方法。
有关如何访问C#的任何想法和/或了解有关此神秘dll的更多信息?
谢谢!
答案 0 :(得分:3)
代码片段使用后期绑定,它绝对是一个COM服务器。如果它是用VB6编写的,那么它也应该有一个类型库。如果您无法从Visual Studio添加对它的引用,则可能性很低,但我看到了一些失败但Tlbimp.exe没有问题的情况。从Visual Studio命令提示符运行它。您还可以运行OleView.exe并使用File + View Typelib查看类型库。
如果这些尝试失败然后您已完成,则无法在没有文档的情况下对此COM组件进行反向工程。坦率地说,无论如何,这都是相当冒险的。如果这个COM组件的原始供应商已经停业,那么至少应该至少有一个程序员仍然记得在此工作。他可能正在阅读,但在你删除一些名字之前他找不到你。
答案 1 :(得分:1)