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

怎么让Delphi能调用VC的DLL?(二维数组做参数)

2012-03-06 
如何让Delphi能调用VC的DLL?(二维数组做参数)VC中:PrintMap(intDelphiMAP[][9]){intx0,y0for(x0x9x

如何让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])


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

热点排行