2011-12-19 2 views
2

Я создал библиотеку классов vb.net. Это интерфейс для устройства хранения. Он предоставляет некоторые объекты и методы для чтения и записи данных на устройство.импортировать библиотеку классов vb.net в проект vb6

Проблема заключается в том, что у клиента есть приложение vb6, где мы хотим добавить функциональность библиотеки классов, чтобы манипулировать устройством. я изменил классы на классы com, проверил флажок com interopt и зарегистрировал библиотеку с .net framework 2.0 regasm.exe.

Я добавил библиотеку в качестве ссылки на пустой проект vb6 и создал объект.

dim t as comlib.obj 

объект был равен 'ничего'

когда я добавил:

t = new comlib.obj 

или

t = createobject("comlib.obj") 

я получил следующее сообщение об ошибке:

run-time error '2147024894 (80070002)': Automation

что я делаю неправильно?

+0

Пожалуйста, прочитайте справку о том, как форматировать сообщения и применять их в следующий раз. Абсолютно не нужно использовать теги '
'. –

+0

Это обычная ошибка Windows, «Файл не найден». Коэффициенты хороши, которые генерируются, потому что вы забыли использовать параметр/codebase, когда вы использовали Regasm.exe. Вы можете использовать служебную программу Procmon от SysInternals, если вы не знаете, какой файл может отсутствовать. –

+0

Другая возможность заключается в том, что оболочка COM не могла быть создана или зарегистрирована с учетом x86 или x64. Я столкнулся с этой проблемой со старым классическим ASP-приложением в прошлом. Он работал в режиме x86, и мне потребовалось создать мою оболочку с помощью x86, а также зарегистрироваться с помощью версии regasm.exe на x86. С тех пор я привык предоставлять инсталляторы/сборки как для x86, так и для x64, и потребитель может выбрать более подходящий. – killthrush

ответ

1

Простое затемнение переменной не присваивает ей значение (то же самое, что и .NET private TypeName variableName;), вам нужно создать его сначала, используя Set T = New Comlib.Obj.

Если вы получаете сообщение об ошибке, вам необходимо использовать стандартные методы отладки, чтобы сузить его или, возможно, опубликовать полное сообщение об ошибке, и кто-то может посоветовать.

0

Я бы сказал, что @Deanna имеет решение, но если это не удается, то

Я хотел бы предложить, что вы должны смотреть на конструкторе в сборке .NET и убедитесь, что это не бросает какой-либо ошибки во время выполнения ,

Даже если у вас есть обработчик ошибок в вашем новом Sub, он не будет поднят до приложения VB6.

Я пошел по соглашению, чтобы сохранить мой .NET-конструктор до минимума, а затем использовать дополнительный метод для кода построения (например, LoadData). Таким образом, вы можете иметь соответствующий обработчик ошибок. Если затем выдается ошибка - она ​​правильно вставляется в VB6.

Смежные вопросы