用VC做了一个控件,里面的导出函数如何返回一个数组呢?
比如说funtion(param),难道是在param里传入一个指针,往这个指针里填写数据。
还是通过返回值返回呢?该怎么返回呢?

解决方案 »

  1.   

    请问楼上的大哥,为什么往指针里写数据比返回字符串要好呢?
    像MFC的函数返回值可是是CString,其实不就是一个字符串吗?
    其实,我也不是要返回字符串,而是字节串,BYTE类型的字节串。
      

  2.   

    1首先你要传BYTE的话,要转换
    2VC不建议返回对象
      

  3.   

    传BYTE的话,为什么要转呢?
    比如说: 
    extern "C" _declspec(dllexport) 
    void changeProt( BYTE * recBuf, int recLen, BYTE * retBuf , int * retLen );recBuf为传入的BYTE型数组的首地址,recLen为传入的数组的长度;
    retBuf为传出的BYTE型数组的首地址,retLen为传出的数组的长度的指针;
    对接收的数据处理,然后从retBuf开始填写要传出的数据,在retLen所指向的地址填写传出的数据的长度不就可以了吗?
      

  4.   

    建好够大的BYTE数组做输出参数,把首地址传进去。
    CString是一个对象,有拷贝构造。
    BYTE*也有拷贝,但BYTE[]没有,也许你能得到首地址,但里面的内容早已毁了。
      

  5.   

    传BYTE的话,为什么要转呢? 
    -------------------------
    我说的是返回,你那种是传指针修改内容
      

  6.   

    BYTE*也有拷贝,但BYTE[]没有.
    请问这句话是什么意思?
    ---------------------------------------------
    也许你能得到首地址,但里面的内容早已毁了.
    如果调用dll里的输出函数时传入数组的话,肯定等这个dll返回,然后再销毁传入数组,所以里面的内容是否早已经毁了,
    取决于调用dll的做法。
    ---------------------------------------------
    CString是一个对象,有拷贝构造,那有哪些需要注意的呢?