dll调试参数访问异常有关问题
dll调试参数访问错误问题。
dll函数:前三个参数传递字符串数组,但是只能访问第一个字符串数组,后面的两个参数访问不了。
红色为错误的地方。
extern "C" _declspec(dllexport) char* __stdcall ML_I(char** arrGroupNo,char** arrMedialpm,char** arrMedialpa,int n,char* disk)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
char d=arrGroupNo[0][0]; //正常
CString strIP=arrGroupNo[0];//正常。返回101.1.110.1
CString st=arrGroupNo[1];//正常。返回101.1.110.2
char str=arrMedialpm[0][0]; //访问错误,我传入的参数是101.1.110.45
CString str1=arrMedialpm[0];//访问错误
return "abc";
}
------解决方案--------------------
上你调用的代码。
------解决方案--------------------
是啊,你调用的地方怎么写的呢?
------解决方案--------------------
数组参数传递的时候是否正确。有越界等操作
------解决方案--------------------
Delphi?跨语言调用,估计很多类型不能直接使用
------解决方案--------------------
dll可能不是按照标准顺序调用参数的
改成__cdecl试试
------解决方案--------------------
arrGroupNo[0]:='101.1.110.01';这个是什么类型?还用单引号?
理论上extern “C”纯C导出的是可以跨语言的。不过一定要找到类型对应变量
------解决方案--------------------
看看对应类型是否正确?
------解决方案--------------------
没看出用 “char** ” 的原因
dll函数:前三个参数传递字符串数组,但是只能访问第一个字符串数组,后面的两个参数访问不了。
红色为错误的地方。
extern "C" _declspec(dllexport) char* __stdcall ML_I(char** arrGroupNo,char** arrMedialpm,char** arrMedialpa,int n,char* disk)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
char d=arrGroupNo[0][0]; //正常
CString strIP=arrGroupNo[0];//正常。返回101.1.110.1
CString st=arrGroupNo[1];//正常。返回101.1.110.2
char str=arrMedialpm[0][0]; //访问错误,我传入的参数是101.1.110.45
CString str1=arrMedialpm[0];//访问错误
return "abc";
}
------解决方案--------------------
上你调用的代码。
------解决方案--------------------
是啊,你调用的地方怎么写的呢?
------解决方案--------------------
数组参数传递的时候是否正确。有越界等操作
------解决方案--------------------
Delphi?跨语言调用,估计很多类型不能直接使用
------解决方案--------------------
dll可能不是按照标准顺序调用参数的
改成__cdecl试试
------解决方案--------------------
arrGroupNo[0]:='101.1.110.01';这个是什么类型?还用单引号?
理论上extern “C”纯C导出的是可以跨语言的。不过一定要找到类型对应变量
------解决方案--------------------
看看对应类型是否正确?
------解决方案--------------------
没看出用 “char** ” 的原因