读书人

怎么让Delphi能调用VC的DLL?(二维数

发布时间: 2012-03-06 20:47:55 作者: rapoo

如何让Delphi能调用VC的DLL?(二维数组做参数)
VC中:
PrintMap(int DelphiMAP[][9])
{
int x = 0,y = 0;
for (x = 0 ;x < 9 ;x++)
{
for (y = 0;y < 9 ;y++)
{
if (Map[x][y] < 'B ')
{
DelphiMAP[x][y] = '0 ' + Map[x][y];
}
else
{
Map[x][y] = 'X ';
}
}
}
}

Delphi中:
Type
TMap=array [0..8,0..8]of Integer;
Map:TMap;
procedure PrintMap(DelphiMap:TMap);external 'fordelphi.dll ';

然后这样调用:
PrintMap(map);
但是报错,请问各位高手要怎样才能正确调用这个DLL的导出函数呢?或者怎样修改VC写的DLL来让Delphi可以调用它呢?


[解决办法]
extern “C” __cdecl PrintMap(int DelphiMAP[][9])
与函数名修饰有关
__cdecl 缺省是Borland C++ 的缺省的C格式命名约定,它在标识符前加一下划线,以保留它原来所有的全程标识符。参数按最右边参数优先的原则传递给栈,然后清栈。
PrintMap(int DelphiMAP[][9])定义的也不是很好,如果没有返回值,最好加上void
extern “C” void __cdecl PrintMap(int DelphiMAP[][9])


[解决办法]
用指针的指针吧

读书人网 >VC/MFC

热点推荐