Почему моя DLL не регистрируется на RegSvr32? - PullRequest
1 голос
/ 14 июля 2010

Мне нужно зарегистрировать файл .dll с именем MatchMolDLL.dll.

Чтобы зарегистрировать DLL, я выполнил следующие действия:

1) Перейти к RUN
2) Введите «cmd»
3) Введите «regsvr32 MatchMolDLL.dll»

Однако regsvr32.exe сообщает:

«MatchMolDLL.dll был загружен, но точка входа DllRegisterServer не найдена».

Как я могу его зарегистрировать?

Если бы мне пришлось связать этот DLL-файл с другим исполняемым файлом, можно ли это сделать?

Ответы [ 2 ]

1 голос
/ 14 июля 2010

Это не COM-сервер.Вы должны использовать P / Invoke, чтобы использовать эту DLL.Инструкции доступны в файле исходного кода , в нем содержатся объявления VB6:

Private Declare Sub mm_SetMol Lib "matchmolDLL.dll" (ByVal st As String)
Private Declare Sub mm_SetCurrentMolAsQuery Lib "matchmolDLL.dll" ()
Private Declare Function mm_Match Lib "matchmolDLL.dll" (ByVal Exact As Boolean) As Long

Private Declare Function mm_GetRings Lib "matchmolDLL.dll" () As Long
Private Declare Function mm_GetAtomRing Lib "matchmolDLL.dll" (ByVal AtomNumber As Long) As Long
Private Declare Sub mm_Version Lib "matchmolDLL.dll" (ByVal st As String)

, которые вам придется преобразовать в соответствующее объявление VB.NET или C # [DllImport].,Используйте "int" вместо Long в этих объявлениях.Например:

[DllImport("matchmolDLL.dll", CharSet = CharSet.Ansi)]
private static extern void mm_SetMol(string st);

и так далее.

1 голос
/ 14 июля 2010

MatchMoIDLL.dll не является COM DLL, и вы не можете использовать regsvr32.exe для ее регистрации. Это простая старая Win32 DLL.

Подробнее об этом можно узнать здесь:

http://merian.pch.univie.ac.at/~nhaider/cheminf/cmmm.html#dll

...