如何在 SQL 服务器程序集中使用 Delphi DLL
how to use Delphi DLL in SQL Server assembly
Delphi动态链接库
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 服务器
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 CREATE ASSEMBLY for assembly
'CalculateDelphi' failed because assembly 'CalculateDelphi' is
malformed or not a pure .NET assembly. Unverifiable PE Header/native stub.
错误消息不言自明:
'CalculateDelphi' failed because assembly 'CalculateDelphi' is malformed or not a pure .NET assembly.
SQL 服务器需要 .NET 程序集,但您没有给它一个 .NET 程序集,而是给它一个普通的 C 样式 DLL,SQL 服务器不支持像其他一些数据库一样导入。
Delphi 无法再生成 .NET 程序集,当 Delphi.NET 在 Delphi 8.
之后被删除时,它失去了这种能力
对于您正在尝试做的事情,您必须使用支持 .NET 的编译器,例如 Visual Studio、RemObjects Oxygene 等:
创建一个在内部调用您的 DLL 的 .NET 程序集包装器。
移植 DLL 代码以直接编译为自己的 .NET 程序集。
Delphi动态链接库
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 服务器
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 CREATE ASSEMBLY for assembly 'CalculateDelphi' failed because assembly 'CalculateDelphi' is malformed or not a pure .NET assembly. Unverifiable PE Header/native stub.
错误消息不言自明:
'CalculateDelphi' failed because assembly 'CalculateDelphi' is malformed or not a pure .NET assembly.
SQL 服务器需要 .NET 程序集,但您没有给它一个 .NET 程序集,而是给它一个普通的 C 样式 DLL,SQL 服务器不支持像其他一些数据库一样导入。
Delphi 无法再生成 .NET 程序集,当 Delphi.NET 在 Delphi 8.
之后被删除时,它失去了这种能力对于您正在尝试做的事情,您必须使用支持 .NET 的编译器,例如 Visual Studio、RemObjects Oxygene 等:
创建一个在内部调用您的 DLL 的 .NET 程序集包装器。
移植 DLL 代码以直接编译为自己的 .NET 程序集。