关于VC++做一个DLL供VB6调用
用VC++做一个DLL供VB6调用,要求DLL返回一个整形数组(动态),请问这个DLL的大体结构应该怎么写?请随便举例写一下。谢谢!采纳后加分到50假如有如下VB代码,用...
用VC++做一个DLL供VB6调用,要求DLL返回一个整形数组(动态),请问这个DLL的大体结构应该怎么写?请随便举例写一下。谢谢!采纳后加分到50
假如有如下VB代码,用VC++如何实现:
DLL中的入口函数:
'//参数是一个动态数组a(),用户传入,处理后返回这个结果数组
function aaa(byref a() as integer)
call bbb( aa() )
end function
'//具体用于处理数组的函数
function bbb(byref aa() as integer)
'//具体处理过程不用考虑,主要问题是在VC++里过程之间怎么传递和返回数组参数
end function
初学VC++,请高手们回答时尽量描述的易懂些,谢谢。 展开
假如有如下VB代码,用VC++如何实现:
DLL中的入口函数:
'//参数是一个动态数组a(),用户传入,处理后返回这个结果数组
function aaa(byref a() as integer)
call bbb( aa() )
end function
'//具体用于处理数组的函数
function bbb(byref aa() as integer)
'//具体处理过程不用考虑,主要问题是在VC++里过程之间怎么传递和返回数组参数
end function
初学VC++,请高手们回答时尽量描述的易懂些,谢谢。 展开
2个回答
展开全部
说一下接口就好了吧……32位情况下
DLL直接返回指针,VB里类型用LONG,拿到的是一个LONG。
DLL再提供两个接口,一个是获取元素(比如int GetVal(int* p, int x) {return p[x];})一个是释放数组(void FreeArr(int* p) {delete[] p;})反正指针在vb里都用LONG,所有指针操作全部设计成函数给vb调用。
这样就可以获取数组、获取数据和释放数组了
如果要用com组件的方式,当然vb那边会方便很多,不过vc这边就麻烦了。com组件我不熟,提到只是提供一个思路。如果真的要做得十分体面、时间也足够的话,用com组件法吧。
关于补充:
你的数组在C++处理过程中,元素数量是固定的还是可变的?
DLL直接返回指针,VB里类型用LONG,拿到的是一个LONG。
DLL再提供两个接口,一个是获取元素(比如int GetVal(int* p, int x) {return p[x];})一个是释放数组(void FreeArr(int* p) {delete[] p;})反正指针在vb里都用LONG,所有指针操作全部设计成函数给vb调用。
这样就可以获取数组、获取数据和释放数组了
如果要用com组件的方式,当然vb那边会方便很多,不过vc这边就麻烦了。com组件我不熟,提到只是提供一个思路。如果真的要做得十分体面、时间也足够的话,用com组件法吧。
关于补充:
你的数组在C++处理过程中,元素数量是固定的还是可变的?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询