Delphi实现DLL导出的Interface如何在其实语言中使用
2017-08-04 19:27
609 查看
首先说明在Delphi中实现一段小功能是非常快捷的,具体应用场景我就不编了,抽象点吧:
在DLL中导出函数
接下来说明在C++中调用这个delphi实现的接口,首先在C++中定义一个导出函数原型:
一、接下来在C++中调用IOutIntf接口
剩下的就简单了:动态加载DLL,获取方法地址,执行方法:
HMODULE hLib = LoadLibrary("xxxx.dll");
GetImpl FuncLoad = (GetImpl)GetProcAddress(hLib, "GetImpl");
OutIntf* impl;//只能声明为指针
FuncLoad(impl);
impl->A("haha");
impl->B();
2、在C#中实现和调用(有空再写)
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#中实现和调用(有空再写)
相关文章推荐
- 关于如何导出一个DLL以及使用此DLL
- 深入浅出Dll(介绍函数导出、类导出、钓子dll、不同语言混合编程方法、插件等的实现方法)
- 忆龙2009:如何使用iMC实现帐号的导出功能
- delphi中使用词霸2005的动态库XdictGrb.dll实现屏幕取词
- 深入浅出Dll(介绍函数导出、类导出、钓子dll、不同语言混合编程方法、插件等的实现方法)
- 忆龙2009:如何使用iMC实现帐号的导出功能
- 如何使用App_LocalResources实现界面多语言
- 如何用delphi语言实现结束指定进程的功能
- 使用java语言操作,如何来实现MySQL中Blob字段的存取
- 深入浅出Dll( 函数导出、类导出、钓子dll、不同语言混合编程方法、插件等的实现方法)
- 使用json-rpc实现delphi+java异构语言RPC调用
- delphi中使用词霸2005的动态库XdictGrb.dll实现屏幕取词
- 使用WIFIMAN.DLL动态库结合Delphi实现Windows无线管理器。
- (MFC中使用dll纯资源) 实现国际化的多语言版本
- 深入浅出Dll(介绍函数导出、类导出、钓子dll、不同语言混合编程方法、插件等的实现方法)
- Asp.net如何使用access数据库做profile实现按照区域显示相应语言功能
- 【转帖】深入浅出Dll(介绍函数导出、类导出、钓子dll、不同语言混合编程方法、插件等的实现方法)
- 深入浅出Dll(介绍函数导出、类导出、钓子dll、不同语言混合编程方法、插件等的实现方法)
- delphi中使用词霸2005的动态库XdictGrb.dll实现屏幕取词
- 如何使用delphi实现取得开机时间