Delphi调用VC的类并引用(参数,执行类方法等)

2017-06-25 08:04:00来源:CSDN作者:rocklee人点击

      一直以为Delphi与VC之间不能进行传递对象类型参数, 所以一直以结构或更普通的数据类型交换数据 , 但前段时间得一大神传授, 终于知道如何实现类对象的传递.

     需要注意的是C++里面的struct才能与delphi里面的class一一对应, 而且,struct里面的元素地址不能随意改变(比如setlength),不然就AV了.

     具体代码在: http://git.oschina.net/tigera15/delphi-vc-callwithclass/blob/master/delphi-vc-passClass.7z

   Delphi的类原型:

type

  size_t = NativeUInt;  MyClass = Class    p1: integer;    p2: pansichar;    p3: size_t;    p4: boolean;    p5: pinteger;    p6: size_t;    function callMethod(pv1: array of integer; pv2: size_t): integer;       stdcall;  End;




     C++的类原型:

struct MyClass{	int p1;	char* p2;	size_t p3;	bool p4;	int* p5;	size_t p6;	virtual int __stdcall callMethod(int* pv1, size_t pv2)	{		MessageBoxA(0, "run VC callMethod", "callMethod", 0);		int lvRet = p1;		for (size_t i = 0; i < p6; i++) {			lvRet += p5[i];		}		for (size_t i = 0; i < pv2; i++) {			lvRet += pv1[i];		}		sprintf_s(p2, p3, "return value:%d", lvRet);		return lvRet;	}};


最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台