C#端
新建类库:
想要COM组件能够让Delphi调用必须使用接口形式 使用vs工具生成GUID删除多余的花括号 代码如下:
namespace TestDll
{
public interface ITestClass1
{
void YourFunction1();
void YourFunction2(string str);
}
[ClassInterface(ClassInterfaceType.None)]
[Guid("6E94AE46-B2D0-4B66-9B5C-52077FBFD2D0")]
[ProgId("TestDll.Class1")]
public class Class1 : ITestClass1
{
public void YourFunction1()
{
Debug.Print("YourFunction1");
}
public void YourFunction2(string str)
{
Debug.Print(str);
}
}
}
鼠标右键项目属性->应用程序-程序集信息->使程序集COM可见 生成DLL文件后根据.NET Framework的版本选择regasm的版本,我示例中的版本是.NET Framework3.5的所以我们在命令行窗口中输入(注意后面的 /codebase一定要加很多文章都没加这个参数导致Delphi调用COM组件失败):
cd C:\Windows\Microsoft.NET\Framework\v2.0.50727
.\RegAsm.exe 你的dll文件地址 /tlb: 项目名称.tlb /codebase
以上操作已经完成了COM组件的注册,如需要在其他机器使用需要拷贝DLL文件和TBL文件然后使用上面的命令注册(建议打包的时候写入注册表里面)。
Delphi端:
新建项目
各版本的Delphi界面不一样,我使用的Delphi10.3.3,导入TLB文件方法如图
![](https://img-blog.csdnimg.cn/ac295f57884a437ead81ea471cb98388.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbTBfMzc4NzYxOTc=,size_15,color_FFFFFF,t_70,g_se,x_16 完了之后就可以引用TLB文件了 示例代码如下:
unit Demo;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, AGSFileUploadDelphi_TLB;
type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
Label2: TLabel;
Label3: TLabel;
Button2: TButton;
Label4: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
OSSService: IOSSService;
Path: string;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
OSSService := COOSSService.Create;
Path := ossService.PutObjectFromFile('C:\Users\Administrator\Desktop\testtxt');
Label2.Caption := Path;
end;
end.
|