как использовать Delphi DLL в сборке SQL Server - PullRequest
0 голосов
/ 19 февраля 2019

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

Ошибка

Сообщение 6544, Уровень 16, Состояние 1, Строка 153 СОЗДАТЬ СБОРКУ для сборкиОшибка «CalculateDelphi», поскольку сборка «CalculateDelphi» искажена или не является чистой сборкой .NET.Неподтверждаемый заголовок PE / родная заглушка.

1 Ответ

0 голосов
/ 19 февраля 2019

Сообщение об ошибке не требует пояснений:

Ошибка «CalculateDelphi», поскольку сборка «CalculateDelphi» искажена или не является чистой сборкой .NET .

SQL Server хочет сборку .NET, но вы не предоставляете ей сборку .NET, вместо этого вы даете ей простую DLL в стиле C, которую SQL Server не поддерживает импорт, как это делают некоторые другие базы данных.

Delphi больше не может создавать сборки .NET, она утратила эту способность, когда Delphi.NET была удалена после Delphi 8.

Для того, что вы пытаетесь сделать, вам придется использовать компилятор с поддержкой .NET,как Visual Studio, RemObjects Oxygene и т. д. для:

  • создания оболочки сборки .NET, которая вызывает ваши DLL внутри.

  • портКод DLL для прямой компиляции в виде собственной сборки .NET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...