我正在尝试使用Unmanaged Exports包(https://sites.google.com/site/robertgiesecke/Home/uploads/unmanagedexports)从C#dll导出函数。我不想使用COM。
不幸的是,我收到了一个错误:
在DllName
中找不到DLL入口点_TestDLL @ 4
我的C#类看起来像这样:
public class TestClass
{
[DllExport]
public static int TestDLL(int x)
{
return x + 2;
}
}
我称之为:
Private Declare Function TestDLL Lib "DllName" Alias "_TestDLL@4" (ByVal x As Long) As Long
Public Sub TestFunc()
MsgBox CStr(TestDLL(2))
End Sub
为什么它不起作用??
答案 0 :(得分:2)
感谢Hans Passant的评论,我尝试在我的dll上使用dumpbin.exe / exports,它给出了一个输出:
转储文件DllName.dll
文件类型:DLL
部分包含\ DllName.dll
的以下导出00000000 characteristics 5315D2DA time date stamp Tue Mar 04 14:19:22 2014 0.00 version 1 ordinal base 1 number of functions 1 number of names ordinal hint RVA name 1 0 000027DE TestDLL
摘要
2000 .reloc 2000 .rsrc 2000 .sdata 2000 .text
如您所见,函数名称为TestDLL。我在VBA中更正了声明:
Private Declare Function TestDLL Lib "DllName" (ByVal x As Long) As Long
现在它可以正常工作:)