我使用的是Delphi 2005(是的,它是相当旧的版本,但目前我就是我必须使用的)并且我尝试使用Visual Studio 2017使用C#创建的DLL来查看我是否可以使它工作.我的想法是,由于C#比旧的Delphi更先进,我可以在DLL中调用一些方法而不是用Delphi编程(其中一些方法已经由我们公司的其他人编程).我的问题是我不太清楚如何做到这一点.
我已经知道可以从Delphi调用DLL而无需注册DLL.这实际上或多或少是游戏破坏者,如果没有注册它就没有实际的方法来使用DLL,因为它使我们的软件更复杂,现在它的工作方式.
首先,我想知道我是否正确创建了PoC DLL.我创建了一个新项目(类库)并为x86编译它,因为使用Delphi 2005创建的程序是32位程序,这里是这个非常简单的DLL的代码.
using RGiesecke.DllExport;
using System;
namespace CalcTest
{
public class CalcTest
{
[DllExport]
public int sum(int a, int b)
{
return a + b;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码是否正确?
另一件事是我不完全确定我是否正确创建了Delphi项目.我可以没有错误地构建它,但是当我尝试运行它时,我收到一条错误消息:
应用程序无法正确启动(0xc000007b).单击"确定"关闭应用程序.
这是代码.
unit TestForm_u;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TTestForm = class(TForm)
Button1: TButton;
summa_lb: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure Laske;
public
{ Public declarations }
end;
var
TestForm: TTestForm;
implementation …Run Code Online (Sandbox Code Playgroud)