Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# GetProcAddress()为.NET DLL返回Nil_C#_.net_Delphi_Com_Delphi 6 - Fatal编程技术网

C# GetProcAddress()为.NET DLL返回Nil

C# GetProcAddress()为.NET DLL返回Nil,c#,.net,delphi,com,delphi-6,C#,.net,Delphi,Com,Delphi 6,我正在尝试从Delphi 6调用.NET DLL 使用LoadLibrary()动态加载DLL工作正常,并返回句柄 Handle:=LoadLibrary(PChar(DLLName)); 但是,GetProcAddress()函数返回nil,即使Handle有效,并且函数“DLL\u Version”存在 GetProcAddress(句柄'DLL_Version'); DLL代码发布在下面 [Guid(“14fd1190-df04-488c-ab0f-b120ea3e3f3a”)] [C

我正在尝试从Delphi 6调用.NET DLL

使用
LoadLibrary()
动态加载DLL工作正常,并返回句柄

Handle:=LoadLibrary(PChar(DLLName));
但是,
GetProcAddress()
函数返回
nil
,即使
Handle
有效,并且函数“DLL\u Version”存在

GetProcAddress(句柄'DLL_Version');
DLL代码发布在下面

[Guid(“14fd1190-df04-488c-ab0f-b120ea3e3f3a”)]
[ComVisible(true)]
公共类未命名类
{
[DllExport]
公共静态整数DLL_版本()
{
返回251;
}
}
我使用nuget包支持C#中的[DllExport]

以下是DumpBin输出:


是否有任何方法可以解决此问题,或者有任何其他可行的方法?

使用Delphi调用.NET DLL,您可以这样尝试:

var 
  OBJ: Variant;
begin 
   try 
      OBJ := CreateOleObject('DLLName.UnManClass');
      ShowMessage(IntToStr(OBJ.DLL_Version));
   finally
      OBJ := Unassigned;
   end;
end

您如何知道DLL导出了
DLL\u Version
函数?当
GetProcAddress()
失败时,请使用
GetLastError()
找出原因。但最常见的原因是请求的函数不存在。再次检查,如使用类似的工具。确保函数确实已导出,并且使用您期望的准确拼写导出。实现和导出函数的.NET代码是什么样子的?可能需要从C#例程中删除
static
关键字。@R.Hoek不,请查看。在LoadLibrary中,使用DLL的完整路径以确保加载了正确的DLL。确保LoadLibrary不返回0。