delphi的dll接口函数原形为Function DLL_get_addata_much_f(muchcnt:integer;var adbuff:array of single;var adlen:integer ):integer; stdcall;在vc里如何调用???? 请大牛赐教
解决方案 »
- dll 返回值和参数类型不能是对象,ActiveX 有类似的限制吗
- Visual Assist X怎么设置排除MFC的标识,WTL和MFC由很多重名的
- 问关于基于TCP和UDP的socket编程的区别
- 一个遍历窗口控件的问题?
- 屏幕大小是1024*768,我做一个SDI程序,但是想把框架设定为1024*900(我有特殊用途)
- 可不可以用程序获取当前CallStack的详细信息(象VC CallStack中给出的类似的)
- 两个变量的比较问题
- 子线程中如何弹出messagebox来提示出错?
- 求救:多线程问题
- Sina BBS
- 大家帮忙看看[cannot access the classview information file]
- 在线等待请教一个winsock网络环境的问题
int iAD_datalen;
float AD_data[32767];
HINSTANCE hDLLUSB1801;
bool bDLLUSB1801=false;
hDLLUSB1801=::LoadLibrary("Pusb1801dll.dll");
if( ! hDLLUSB1801 )
{
bDLLUSB1801=false;
return;
}
else
{
if (GetProcAddress(hDLLUSB1801,"DLL_get_addata_much_f")!=NULL)
{
(FARPROC)DLL_get_addata_much_f=GetProcAddress(hDLLUSB1801,"DLL_get_addata_much_f");
DLLUSB1801_get_addata_much_f(itemp,&AD_data[0],iAD_datalen);}老出错啊
var
i:integer;
begin
get_addata_much(muchcnt);
for i:=0 to iAD_datalen-1 do
adbuff[i]:= fAD_data[i]; adlen:=iAD_datalen;
result:=iAD_datalen;
end;
函数名是不是写错了, DLL_get_addata_much_f这个吧
好像你的这里动态调用DLL与标准的不太一样,看看MSDN的例子,比较下另外,你应该帖出具体是什么错误啊
var
i:integer;
begin
get_addata_much(muchcnt);
for i:=0 to iAD_datalen-1 do
adbuff[i]:= fAD_data[i]; adlen:=iAD_datalen;//==256
result:=iAD_datalen;
end;int (_stdcall *DLL_get_addata_much_f)(int muchcnt,float *adbuff,int adlen);
int iAD_datalen;
float AD_data[32767];
HINSTANCE hDLLUSB1801;
bool bDLLUSB1801=false;
hDLLUSB1801=::LoadLibrary("Pusb1801dll.dll");
if( ! hDLLUSB1801 )
{
bDLLUSB1801=false;
return;
}
else
{
if (GetProcAddress(hDLLUSB1801,"DLL_get_addata_much_f")!=NULL)
{
(FARPROC)DLL_get_addata_much_f=GetProcAddress(hDLLUSB1801,"DLL_get_addata_much_f");
Dll_get_addata_much_f(itemp,&AD_data[0],iAD_datalen); int i= iAD_datalen;//iAD_datalen 的值总不对 啊
}
}
{
(FARPROC)DLL_get_addata_much_f=GetProcAddress(hDLLUSB1801,"DLL_get_addata_much_f");
//参数不是指针,值传不出来。
int i= Dll_get_addata_much_f(itemp,&AD_data[0],iAD_datalen);
//现在看看i的值是否正确。 }
第一次考验,第二次就不对了,我要循环10次为何在delphi里就可以传出来??
第一次对,第二次就不对了,我要循环10次为何在delphi里就可以传出来??
第一次对,第二次就不对了,我要循环10次为何在delphi里就可以传出来??
" 我没有看明白
至于第一次对,第二次就不对了,应该是你的循环代码不对。
{
int i= Dll_get_addata_much_f(itemp,&AD_data[0],iAD_datalen);
STOP_SAMP=STOP_SAMP + 1;
}
循环到第二次就出问题
integer不是标准的数据类型,它只是delphi里面的东东,将integer改为int32