DELPHI是20年前编程语言里面的神器,特别是界面设计,易用性等方面没有一种语言可以比拟。当然最广泛使用的还是C++,无他主要C的王者地位没有被撼动。但是C++学习还是很难,以前学习DELPHI还不想丢掉。所以用delphi为主编写程序,有些以前的c代码还想很好用起来,就需要用两种编程语言。比较好的做法是,底层程序使用C++把程序编译成DLL,DELPHI调用该DLL。
一般的函数调用很容易,但是当程序存在局部变量的时候就不容易啦。我试过几种方法都不理想。
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里面存变量,这种方法没有问题。也就是说,可以复用代码,不能复用对象或类。
https://blog.csdn.net/dbyoung/article/details/94576926 这篇文章中,
调用 VC 的 C++ Class 类导出的 DLL 函数时,需要在 VC 中,对对象进行实例化,这样可以操作对象。本人试过,在里面只要定义类的变量就会出错,我想可能是没有给类的属性分配内存;由测试程序也可以看出,没有测试类的属性存在的情况。删除类变量使用就可行,也就是变成第一种方法。
最后只能用第一种方法,在delphi里面重建对象。