各位高手,我现在遇到如下问题:
我用VC写了一个DLL用来处理算法,再用Delphi来调用它。这个DLL的入口函数为int GenCaculate(int **X,xlength int,ylength int);也就是说,作为delphi的主程序必须要向DLL传一个xlength,ylength的二维数组,其中xlength,ylength可变。这个问题怎么解决啊,各位兄台,先谢谢了!
如果说在VC里调用这个函数,只要new出一个X数组,然后把这个二维指针名作为参数就可以了,可Delphi我没看到关于二维指针的用法??
我用VC写了一个DLL用来处理算法,再用Delphi来调用它。这个DLL的入口函数为int GenCaculate(int **X,xlength int,ylength int);也就是说,作为delphi的主程序必须要向DLL传一个xlength,ylength的二维数组,其中xlength,ylength可变。这个问题怎么解决啊,各位兄台,先谢谢了!
如果说在VC里调用这个函数,只要new出一个X数组,然后把这个二维指针名作为参数就可以了,可Delphi我没看到关于二维指针的用法??
extern "C" __declspec(dllexport) void input(int x)
{ theApp.Data=x;
}
extern "C" __declspec(dllexport) int output(int x)
{
return theApp.Data;
}
编译通过后,在Delphi中调用这两个函数,如下:
input(StrToInt(edit1.Text));
edit4.Text:=inttostr(output(strtoint(edit2.Text)));这样运行起来一切正常,但如果把第二个函数改为
edit4.Text:=inttostr(output(i));其中i为integer时,就出现了如下错误:
F:/动态链接库实例\TestVcDllForm\Project1.exe faulted with message:‘access violation at 0x00000000:read of address 0x00000000'.Process Stopped.Use Step or Run to continue.
这是怎么回事啊?哪个高人指点一下啊
2. 声明API时,将指针类型声明为 WideString 类型而不要声明为PCHAR
可还是有问题啊,按照你的方法运行正常,可当我关闭程序时又出问题了,错误如下:
PProject Project1.exe raised exception class EInvalidPointer with message'Invalid pointer operation' Process stopped.Use Step or Run to continue.
哪位兄弟知道,请赐教啊!!!
这好象是指针问题,可我没有定义指针啊