Как получить доступ и понять старые DLL из C # - PullRequest
2 голосов
/ 18 октября 2010

Мне дали старую dll и назначение доступа к ней через C # .NET 3.5.Я полагаю, что dll изначально была построена с VB6, но я не уверен.Нет никакой документации или источника для dll кроме примера того, как использовать это в VB6.Я был в состоянии успешно получить доступ к нему через VB.NET 3.5.Пример кода для доступа выглядит следующим образом:

myLib = CreateObject("MyLib.api")
myConnection = myLib.CreateObject("NameOfConnectionObject")
myConnection.do_something("abc")

Существует несколько различных объектов, которые создаются из библиотеки, и у всех этих объектов разные методы.Я пытался использовать различные инструменты чтения DLL, но все методы экспорта отображаются как мусор.Я также попытался импортировать dll в visual studio, но я получаю сообщение об ошибке, указывающее, что dll недоступна и / или не является COM-объектом или сборкой.Итак, я знаю только о методах из старой документации, которая редка.

Есть идеи о том, как получить доступ к C # и / или узнать больше об этой загадочной DLL?1008 *

Ответы [ 2 ]

3 голосов
/ 18 октября 2010

Фрагмент кода использует позднюю привязку, это определенно COM-сервер. Если он был написан на VB6, то он также должен иметь библиотеку типов. Шансы малы, если вы не можете добавить ссылку на него из Visual Studio, но я видел несколько случаев, когда это не удавалось, но у Tlbimp.exe не было проблем. Запустите его из командной строки Visual Studio. Вы также можете запустить OleView.exe и использовать File + View Typelib для просмотра библиотеки типов.

Если эти попытки потерпят неудачу, то все готово, вы не сможете реконструировать этот COM-компонент без документации. Что, честно говоря, довольно рискованно в любом случае. Если первоначальный поставщик этого COM-компонента не работает, то должен быть хотя бы программист, который все еще помнит, как работал над этим. Возможно, он читает ТАК, но не может найти вас, пока вы не уроните несколько имен.

1 голос
/ 18 октября 2010

Вы пробовали отражатель?http://www.red -gate.com / products / отражатель / ?

РЕДАКТИРОВАТЬ: отражатель не работает со сборками, отличными от .net, и это VB6, поэтому это не жизнеспособное решение

...