为什么我的DLL不会注册RegSvr32?

时间:2010-07-14 06:58:44

标签: dll winapi regsvr32

我必须注册名为MatchMolDLL.dll的.dll文件。

要注册DLL,我按照以下步骤操作:

1)转到RUN
2)键入“cmd”
3)键入“regsvr32 MatchMolDLL.dll”

然而regsvr32.exe报告:

  

“已加载MatchMolDLL.dll,但未找到DllRegisterServer入口点。”

我该如何注册?

如果我必须将此.dll文件与另一个可执行文件链接,可以这样做吗?

2 个答案:

答案 0 :(得分:1)

MatchMoIDLL.dll不是COM DLL,您无法使用regsvr32.exe进行注册。这是一个普通的旧Win32 DLL。

您可以在此处找到更多相关信息:

  

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

答案 1 :(得分:1)

它不是COM服务器。您必须使用P / Invoke来使用此DLL。这些说明在source code file中提供,它给出了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);

等等。