Вызов .Net Class Library (dll) из VB - PullRequest
       16

Вызов .Net Class Library (dll) из VB

2 голосов
/ 12 февраля 2009

Я использовал учебник (http://support.microsoft.com/kb/317535) для создания класса VB.NET, который экспортирует видимый COM-метод для вычисления контрольных сумм MD5.

Проблема в том, что мне нужно вызывать этот .dll с языка, похожего на VB (Extra Basic), и он поддерживает только вызовы COM. На моей машине все работает как чудо, но на конечном сервере это не работает вообще. Я получаю «Создание объекта не удалось» из приложения «VB like».

Согласно руководству, единственное, что нужно сделать, это использовать regasm для регистрации .dll. Это не работает Я, очевидно, сделал что-то не так, когда я зарегистрировал .dll.

Что делает VS2005, чтобы сделать этот .dll видимым для вызовов COM?

Я пытался использовать regsvr32, но ему не удалось зарегистрировать .dll со следующим сообщением: «xxx.dll был загружен, но точка входа DllRegisterServer не найдена. Этот файл не может быть зарегистрирован» *

С наилучшими пожеланиями Ausgar

Ответы [ 3 ]

4 голосов
/ 12 февраля 2009

Вы не можете использовать Regsvr32.exe, Regasm.exe требуется. Вы должны либо запустить его с аргументом командной строки / codebase, либо установить сборку в GAC. Я полагаю, это ваша проблема.

Подобные проблемы с регистрацией всегда беспочвенны, и не в последнюю очередь потому, что для них требуется программа установки вместо Xcopy.exe И вызовите DLL Hell, если у вас неправильная версия. Что вы не будете, если вы не используете GAC. Попробуйте вместо этого использовать манифест, содержащий элемент . Возьмите первый удар Google.

0 голосов
/ 12 февраля 2009

Похоже, у вас не все элементы, которые требуются вашему приложению, установлены или работают на сервере. Вот некоторые вещи, на которые стоит обратить внимание:

  1. Установлен ли .NET Framework?
  2. Убедитесь, что COM работает. Некоторые фундаментальные вещи, которые нужно попробовать:
    • Вставка объекта в документ WordPad.
    • Если вы можете запустить WSCript, запустите простой vbscript, который создает объект.
    • Запустите Dependency Walker на вашем EXE и убедитесь, что у вас есть все, что вам нужно.
  3. Если вышеперечисленное не поможет вам, вы можете использовать Sysinternals ProcMon , чтобы посмотреть, какие файлы и записи реестра доступны для вашего приложения (и, возможно, не найдены). Это должно дать вам подсказки о том, что происходит.
0 голосов
/ 12 февраля 2009

Вы пытались зарегистрировать COM DLL, используя regsvr32? Я не знаю, если regasm делает это автоматически, но, очевидно, это не так.

...