我用vc写了一个com控件,比如
test([in]long i, [out,retval] BYTE* buffer)我在vc中写程序调用
unsigned char tt[10];
long j = 10;
tt = test(j);这样不行unsigned char *pp;
pp = new unsigned char [10];pp = test(j);memcpy(pp, test(j), 10);都提示出错不知如何调用,请高手指点

解决方案 »

  1.   

    LPBYTE tt = NULL;
    test(i, &tt);
    delete tt;(或者CoTaskMemFree之类 看你接口实现怎样分配的,按道理应该CoTaskMemAlloc,但是实际上很多都没有这样)
      

  2.   

    估计是内存访问冲突了,可能是访问了COM组件中的一段临时内存,比如函数栈上的。有个恶心的事情你要注意,虽然你调用的是方法函数,其实COM包装了很多层,中间不一定经过了什么鸟玩意,所以最安全的,还是要用CoTask来分配内存,如果是字符串,就SysAllocString
      

  3.   


    BYTE* buffer是一个返回值类型,所以在外面调用com组件的时候这个函数会提示只有一个传入的参数,我主要不知道怎么取得那个返回值
      

  4.   

    unsigned char tt[10]; 
    long j = 10; 
    tt = test(j); 
    tt[10]的最大是9好不好?
    test([in]long i, [out,retval] BYTE* buffer) 改成 
    test([in]long i,byte* fuck ,[out,retval] BYTE buffer)
    char xx[100];
    char x[1];
    x=test(10,xx);