DELPHI使用C++生成DLL文件里面定义的类

意义

DELPHI是20年前编程语言里面的神器,特别是界面设计,易用性等方面没有一种语言可以比拟。当然最广泛使用的还是C++,无他主要C的王者地位没有被撼动。但是C++学习还是很难,以前学习DELPHI还不想丢掉。所以用delphi为主编写程序,有些以前的c代码还想很好用起来,就需要用两种编程语言。比较好的做法是,底层程序使用C++把程序编译成DLL,DELPHI调用该DLL。
一般的函数调用很容易,但是当程序存在局部变量的时候就不容易啦。我试过几种方法都不理想。

1、最简单的做法

 OneHandle:=LoadLibrary('mytest.dll');   //动态载入DLL,并返回其句柄
  try
    if OneHandle <> 0 then
      ADDFunc:=GetProcAddress(OneHandle,'AddNumber');    //获取内部函数的地址
    if (@ADDFunc <> nil) then
      begin
        sum:=ADDFunc(Num1,Num2);  //实际的仿真函数
        Edit3.Text:=IntToStr(sum);
      end
    else
      RaiseLastWin32Error;  //异常处理
  finally
    FreeLibrary(OneHandle);   //调用完毕回收DLL占用的资源
  end;

单纯使用程序,没有在DLL里面存变量,这种方法没有问题。也就是说,可以复用代码,不能复用对象或类。

2、尝试一种方法,但没有成功

https://blog.csdn.net/dbyoung/article/details/94576926 这篇文章中,
调用 VC 的 C++ Class 类导出的 DLL 函数时,需要在 VC 中,对对象进行实例化,这样可以操作对象。本人试过,在里面只要定义类的变量就会出错,我想可能是没有给类的属性分配内存;由测试程序也可以看出,没有测试类的属性存在的情况。删除类变量使用就可行,也就是变成第一种方法。

2、最后一种也没有成功

https://rocklee.blog.csdn.net/article/details/73695419?spm=1001.2101.3001.6650.10&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-10-73695419-blog-7791144.pc_relevant_multi_platform_featuressortv2dupreplace&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-10-73695419-blog-7791144.pc_relevant_multi_platform_featuressortv2dupreplace&utm_relevant_index=18

最后只能用第一种方法,在delphi里面重建对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值