函数原型同时函数是不是__stdcall协议的?
VB只能调用__stdcall协议的

解决方案 »

  1.   

    这是返回值的结构定义:
    typedef struct type_QReturn {
    int BlkCount;
    pQ_BlkInfo pBlkInfo;
    int LyrCount;
    pQ_LyrInfo pLyrInfo;
    } QReturn,*pQReturn;这是pQ_BlkInfo的定义:
    typedef struct type_Q_BlkInfo {
    char Name[256];
    double X;
    double Y;
    short Rows;
    short Cols;
    } Q_BlkInfo, *pQ_BlkInfo;这是Q_LyrInfo的定义:
    typedef struct t_LyrInfo {
    char Name[512];
    char Flag;
    short Color;
    BOOL IsLocked;
    } Q_LyrInfo,*pQ_LyrInfo;函数定义:
    pQReturn _stdcall QInfo ( char * filename)
    {
        pQReturn pQret;
        int nCount;    ... ...    pQret = new QReturn[nCount];    ...    return pQret;
    }谢谢了!
      

  2.   

    最好不要返回指针
    函数调用结束后
    内部数据所占内存会被回收
    指针指向的数据不可知
    建议你去看看这本书:
    http://www.china3y.com/soft/book/c++jc.zip
    高质量C++编程指南
      

  3.   

    其实我还有一个释放QInfo()分配的内存的函数:QFree(pQReturn pQret){...},VB程序可以调用它释放内存。
      

  4.   

    将数据作为参数
    函数返回值表示函数执行的成功与否如:
    BOOL _stdcall QInfo(char * filename, pQReturn pQrtn);