Delphi实现DLL导出的Interface如何在其实语言中使用

首先说明在Delphi中实现一段小功能是非常快捷的,具体应用场景我就不编了,抽象点吧:

type
  IOutIntf = interface
    function A(name: PAnsiChar): Integer; stdcall;
    procedure B; stdcall;
  end;

在DLL中导出函数

procedure GetImpl(out impl: IOutIntf); stdcall;

接下来说明在C++中调用这个delphi实现的接口,首先在C++中定义一个导出函数原型:

typedef void(__stdcall *GetImpl)(IOutIntf*&);
//C++没有out关键字,用*&代替

一、接下来在C++中调用IOutIntf接口

#pragma once
#include <Unknwn.h>

class OutIntf: public IUnknown
{
public:
    virtual int __stdcall A(char*)=0;
    virtual void __stdcall B()=0;
}

剩下的就简单了:动态加载DLL,获取方法地址,执行方法:

  HMODULE hLib = LoadLibrary("xxxx.dll");
  GetImpl FuncLoad = (GetImpl)GetProcAddress(hLib, "GetImpl");
  OutIntf* impl;//只能声明为指针
  FuncLoad(impl);
  impl->A("haha");
  impl->B();

2、在C#中实现和调用(有空再写)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值