VB、VC 混合编程(dll)中数组的传入传出

VB、VC 混合编程(dll)中数组的传入传出

ID:41032853

大小:34.50 KB

页数:4页

时间:2019-08-14

VB、VC 混合编程(dll)中数组的传入传出_第1页
VB、VC 混合编程(dll)中数组的传入传出_第2页
VB、VC 混合编程(dll)中数组的传入传出_第3页
VB、VC 混合编程(dll)中数组的传入传出_第4页
资源描述:

《VB、VC 混合编程(dll)中数组的传入传出》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、VB、VC混合编程(dll)中数组的传入传出2008年10月23日星期四21:39以前用到的神经网络都是在matlab中调的,而项目需要,要写个神经网络的算法,系统主界面是VB写的,在VB中做网络训练速度是不照的,用VB,VC的混合编程,但是一直被VB与Dll之间的数组传递这个难题所困扰,在网上搜了也找不到答案,据说safearray可以解决,但是看了下比较麻烦,在CSDN社区中也没有找到答案,但是社区中一个朋友的指点,给我找到解决问题的方法了。下面总结下共享。数值型数组在VB中其数据是连续存放的,相当于一维的,

2、而在C/C++中数组可以等价于指向数组第1个元素的指针。可以用引用的方式把VB中数组的第1个元素的地址传给VC编写的DLL,在DLL中用一个指针来接收,这样就实现了VB到Dll在中数组的传递。从DLL传递数组给VB方法相同,过程相反.如果是二维数组,则把二维数组按照一维数组的方式传入传出,只是在使用的时候,顺便把二维数组的行和列数传递即可。总体思想是这样的。下面看例子。VC中:double_stdcallOneDimensionArrayTest(double*inArr,intnCount,double*out

3、Arr,int*ioutArrCount)//一维数组的传入传出{intiNum=nCount;double*dRes=newdouble[iNum];inti;for(i=0;i

4、ntnRows,intnCols,double*outArr,int*outRows,int*outCols)//二维数组的传入传出{double*dRes=newdouble[nRows*nCols];inti;intj;for(i=0;i

5、ols*i+j]*2;}}*outRows=nRows;*outCols=nCols;delete[]dRes;}LIBRARY"TestDll"EXPORTS;此处可以是显式导出Add@1darray@2OneDimensionArrayTest@3TwoDimensionArrayTest@4VB中DeclareFunctionOneDimensionArrayTestLib"D:在编程序DllVBLoadDllTestDll.dll"(ByRefinputerAsDouble,ByValinLeng

6、thAsLong,ByRefoutputAsDouble,ByRefoutLengthAsLong)AsDoubleDeclareFunctionTwoDimensionArrayTestLib"D:在编程序DllVBLoadDllTestDll.dll"(ByRefinputerAsDouble,ByValinRowsAsLong,ByValinColsAsLong,ByRefoutputerAsDouble,ByRefoutRowsAsLong,ByRefoutColsAsLong)PrivateSu

7、bcmdTest2_Click()Diminputer(8)AsDoubleDimout(9)AsDoubleDimresAsDoubleDimmAsLonginputer(0)=1.2inputer(1)=2.3inputer(2)=1res=OneDimensionArrayTest(inputer(0),9,out(0),m)MsgBoxCStr(m),vbOKOnly,"一维数组的元素个数"'MsgBoxCStr(res)DimstrAsStringDimiAsIntegerFori=0ToUBound(

8、out)str=str+""+CStr(out(i))NextMsgBoxstr,vbOKOnly,"一维数组的元素"EndSubPrivateSubcmdTest3_Click()DimiRowsAsIntegerDimiColsAsIntegeriRows=3iCols=4Diminputer()AsDoubleReDiminputer(iRows,iCols)Dim

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。