首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi调用VC写的DLL时传递类指针参数有关问题

2012-12-30 
delphi调用VC写的DLL时传递类指针参数问题在VS中代码为://TestClass.hclass stcTest{public: int a}//DL

delphi调用VC写的DLL时传递类指针参数问题
在VS中代码为:
//TestClass.h
class stcTest
{
public:
 int a;
};

//DLLTEST.CPP
int CDLLTestApp::GetMya(stcTest* ss)
{
 return ss->a;
}
//main.cpp
extern "C" __declspec(dllexport) int Getya(stcTest* ss)
{
 return theApp.GetMya(ss);
}
 
delphi中代码:
//DLLTESTUNIT.PAS
stcTest = class
  public
    a: Integer;
  end;
function Getya(var ya: stcTest): Integer;cdecl;
implementation
function Getya;external 'DLLTest.dll';
调用:
var
  x: stcTest;
begin
  x := stcTest.Create;
  x.a := 3;
  ShowMessage(IntToStr(x.a));
  ShowMessage(IntToStr(Getya(x)));
  x.Free;
end;
 
这里show出来的结果二者不一样。
如果改用record类型结果就一样了。
现在问题是我在使用的DLL有类指针参数,这些类无法改成Record类型,该怎么处理?
[解决办法]
stcTest = class
  public
  a: Integer;
  end;
class改成record,再加一句:
pstcTest=^stcTest;
定义时把变量定义为pstcTest即可
[解决办法]
哦是一个类啊。。c++和DELPHI类有所不同,因此这两个语言之间不能进行类传递
[解决办法]
class stcTest和stcTest = class的大小一样吗?

热点排行