如何在SQL Server程序集中使用Delphi DLL

问题描述 投票:1回答:1

Delphi DLL

library SqlDll;

uses
  System.SysUtils,
  System.Classes;

{$R *.res}

function SqlQuery(_a, _b: Integer): Integer; stdcall; export;
begin
  Result := _a + _b;
end;

exports
   SqlQuery;

begin

end.

SQL Server

DROP ASSEMBLY CalculateDelphi
GO
CREATE ASSEMBLY CalculateDelphi 
FROM 'C:\SqlDLL\SqlDll.dll' 
WITH PERMISSION_SET = unsafe  
GO

错误

Msg 6544,Level 16,State 1,Line 153为程序集'CalculateDelphi'创建程序集失败,因为程序集'CalculateDelphi'格式错误或不是纯.NET程序集。无法验证的PE标头/本机存根。

sql-server delphi-2010 sqlclr sql-server-2017
1个回答
1
投票

错误消息是自解释的:

'CalculateDelphi'失败,因为程序集'CalculateDelphi'格式错误或不是纯.NET程序集。

SQL Server需要一个.NET程序集,但你没有给它一个.NET程序集,而是给它一个简单的C风格的DLL,而SQL Server不像其他数据库那样支持导入。

Delphi不再能够生成.NET程序集了,Delphi.NET在Delphi 8之后被删除时,它失去了这种能力。

对于您要做的事情,您必须使用支持.NET的编译器,如Visual Studio,RemObjects Oxygene等,以便:

  • 创建一个.NET程序集包装器,在内部调用DLL。
  • 将DLL代码移植到其自己的.NET程序集中。
© www.soinside.com 2019 - 2024. All rights reserved.