用VC做了一个控件,里面的导出函数如何返回一个数组呢?
比如说funtion(param),难道是在param里传入一个指针,往这个指针里填写数据。
还是通过返回值返回呢?该怎么返回呢?
比如说funtion(param),难道是在param里传入一个指针,往这个指针里填写数据。
还是通过返回值返回呢?该怎么返回呢?
解决方案 »
- 关于IM软件的求助帖
- 请教VB6.0 VC++6.0 SQL SERVER 2000 OFFICE2003 VS2008的安装顺序。
- 读取文件时出现一个奇怪的错误
- 请教:改变主框架背景和重画菜单的问题?
- 我在clistview的派生类中创建了一个clistctrl对象,想让clistctrl中各个行中的字的颜色不一样
- 大伙进来看一下吧。为什么建立了内存映射文件(64M)。不能写进去。试了好几次
- 我在视类成员函数中用这两个函数,::SetCursor()和SetCursor()有啥区别??
- 求教高手:怎样动态增减工具览内的按钮数量,以及为每个按钮增加一字串,预知详情请进!
- spy++是怎样拦截指定窗口的消息的?
- 我有个DLL文件和一个头文件,怎么用呢?
- 点:ppstream://xxxxxxxxxxxxxxxxxxxxxx的连接启动 ppstream这个软件,这种怎么编程实现
- 面向过程和面向对象的区别到底是什么?
像MFC的函数返回值可是是CString,其实不就是一个字符串吗?
其实,我也不是要返回字符串,而是字节串,BYTE类型的字节串。
2VC不建议返回对象
比如说:
extern "C" _declspec(dllexport)
void changeProt( BYTE * recBuf, int recLen, BYTE * retBuf , int * retLen );recBuf为传入的BYTE型数组的首地址,recLen为传入的数组的长度;
retBuf为传出的BYTE型数组的首地址,retLen为传出的数组的长度的指针;
对接收的数据处理,然后从retBuf开始填写要传出的数据,在retLen所指向的地址填写传出的数据的长度不就可以了吗?
CString是一个对象,有拷贝构造。
BYTE*也有拷贝,但BYTE[]没有,也许你能得到首地址,但里面的内容早已毁了。
-------------------------
我说的是返回,你那种是传指针修改内容
请问这句话是什么意思?
---------------------------------------------
也许你能得到首地址,但里面的内容早已毁了.
如果调用dll里的输出函数时传入数组的话,肯定等这个dll返回,然后再销毁传入数组,所以里面的内容是否早已经毁了,
取决于调用dll的做法。
---------------------------------------------
CString是一个对象,有拷贝构造,那有哪些需要注意的呢?