C++ DLL h文件:extern "C" __declspec(dllexport) unsigned int __stdcall WINAPI GetA(float *fData,int iNum1,int iNum2);Delphi7 加载DLL:function F_GetA(fData:Array of Single;iNum1,iNum2:Integer):Cardinal;stdcall;external 'MyDLL.dll' name GetA;var
fData:Array[0..3000] of Single;//输出的浮点型数组
iNum1:Integer;//输入的数据
iNum2:Integer;//输入的数据iNum1:=10;
iNum2:=20;
if(F_GetA(fData,iNum1,iNum2)=0) then
ShowMessage('失败。')
else
ShowMessage('成功。');
结果:
通过调试发现,在调用F_GetA过程中,
1、iNum1=3000(随fData长度变化);
2、iNum2=10(随iNum1设置变化);
现在的结果就是,DLL中即使没有做任何处理,“fData:Array[0..3000] of Single”内的长度发生改变,比如设成[0..2048],那么iNum1也就等于2048了;而同理,iNum2又随iNum1的设置变化。
初次使用delphi7,这样的结果,不知所云的#¥@%
fData:Array[0..3000] of Single;//输出的浮点型数组
iNum1:Integer;//输入的数据
iNum2:Integer;//输入的数据iNum1:=10;
iNum2:=20;
if(F_GetA(fData,iNum1,iNum2)=0) then
ShowMessage('失败。')
else
ShowMessage('成功。');
结果:
通过调试发现,在调用F_GetA过程中,
1、iNum1=3000(随fData长度变化);
2、iNum2=10(随iNum1设置变化);
现在的结果就是,DLL中即使没有做任何处理,“fData:Array[0..3000] of Single”内的长度发生改变,比如设成[0..2048],那么iNum1也就等于2048了;而同理,iNum2又随iNum1的设置变化。
初次使用delphi7,这样的结果,不知所云的#¥@%
解决方案 »
- AdoQuery的更新异常求救:当删除数据集为空后,在DbGrid中直接编辑,不能Post数据到后台数据库
- 写了个dll,如何让rundll32在系统运行的时候,一直执行这个dll?
- 一个关于access数据库更新的问题
- 问题接龙。非技术性问题。娱乐,欢迎参与!!
- *****************现在CSDN人气严重不足,特此放分!*********************
- 急求Delphi5的下载地址,重分感谢
- combobox输入法
- 关于DBGRID的问题
- 请教!!!如何能在窗体关闭后将包含这个窗体的DLL同时释放掉?
- 我想实现简历的打印功能,哪些控件比较好?我是新手.谢谢......
- 如何在多个unit中调用excel单元格读写函数
- 请教关于cxGridDBTableView的问题!
//DLL调用规范的问题
//把stdcall换成cdecl
function F_GetA(fData:Array of Single;iNum1,iNum2:Integer):Cardinal;cdecl;external 'MyDLL.dll' name GetA;
fData:Array[0..3000] of Single;//输出的浮点型数组
iNum1:Integer;//输入的数据
iNum2:Integer;//输入的数据iNum1:=10;
iNum2:=20;
if(F_GetA(@fData,iNum1,iNum2)=0) then
ShowMessage('失败。')
else
ShowMessage('成功。');试试这样写
ShowMessage('失败。')
else
ShowMessage('成功。');
试试看 可能你传递的参数不正确!