您的位置:首页 > 编程语言 > Delphi

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

2017-08-04 19:27 609 查看
首先说明在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#中实现和调用(有空再写)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐