调用动态链接库时出现的一个奇怪问题
我用delphi写了一个可执行程序,调用VC写的动态链接库时出现了一个奇怪的情况:函数共有四个参数,前三个传递完全正常,可第四个怎么也传递不过去,(第三、四个参数的数据类型完全相同!)在VC中调试时第四个数组的值总显示:CXX0030:Error:expression cannot be evaluated
详细代码如下,请各位大虾帮忙解燃眉之急,谢谢!
delphi部分:
type
TModValue = function(a:PChar; b:integer; c:array of double; d:array of double):integer;stdcall;
var
ModValue: TModValue;
dimArr : array[0..50] of double;
assmDimArr : array[0..50] of double;
appName: PChar;
procedure ...:
handle:=LoadLibrary('AIDLL.dll');
...
@ModValue:= GetProcAddress(Handle,'ModValue');
...
//给appName、dimArr、assmDimArr数组赋值
...
ModValue(appName,2,dimArr,assmDimArr);
VC部分:
ModValue.cpp:
#include "ModValue.h"
int __stdcall ModValue(char* appName,int assemblyIndex,double dimArr[DIM_NUMBER],double assmDimArr[DIM_NUMBER])
{
...
for (int k=0;k<DIM_NUMBER;k++)
{
if (assmDimArr[k]>0.00001) //在这一步出现内存访问错误!
...
}
...
}
ModValue.h:
#define DIM_NUMBER 50
int __stdcall ModValue(char* appName,int assemblyIndex,double dimArr[DIM_NUMBER],double assmDimArr[DIM_NUMBER]);
ModValue.def:
EXPORTS
ModValue