当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: 求救!!我们现在课程设计,用pb编东西,请大家给我点东西!!!在线等待!!! 有哪位大狭能给我点东西,真的很急了,我现在是个新手,所以分也不多只能给这么多!!!!请大家帮助! ......
 ·pb现在找工作真的较难......    »显示摘要«
    摘要: 我是一名武汉的应届毕业生,学了pb二年,java也学了一段时间,学的不错,用pb作了些软件,在liulee的网站上以原代码形式公布,但参加了几次招聘会,发现现在招pb的公司是越来越少了,现在感觉很迷茫! ......


为什么会出现这种情况请高手指点迷津

我想用接口函数传递数组,接口如下:  
  [  
  object,  
  uuid(C06AA892-F0D8-4668-AFEE-FB76C8C75B0C),  
  helpstring("ISimpObj   Interface"),  
  pointer_default(unique)  
  ]  
  interface   ISimpObj   :   IUnknown  
  {  
  HRESULT   Write([in]long   nSize,   [in,   size_is(nSize)]    
                                                                    BYTE*   buf);  
  HRESULT   Read([in]long   nSize,   [out,   size_is(nSize)]    
                                                                  BYTE*   buf);  
  };  
   
  我分别用Inproc   Server(DLL)和Local   Server(EXE)两种形式实现该接口,  
  客户用下面的方式获取接口指针:  
      ISimpObj*   pI_Simp   =   NULL;  
    (1)Inproc   Server(dll):    
  hr   =   CoCreateInstance(CLSID_SimpObj,   NULL,   CLSCTX_INPROC_SERVER,   IID_ISimpObj,   (LPVOID*)(&pI_Simp));  
   
    (2)   Local   Server(Exe):  
  hr   =   CoCreateInstance(CLSID_SimpObj,   NULL,    
  CLSCTX_LOCAL_SERVER,   IID_ISimpObj,   (LPVOID*)(&pI_Simp));  
   
  结果如下:  
  Inproc   Server(dll):   正确执行,可以获取接口指针并在Server和Client之间  
  传递数组。  
  Local   Server(exe):   不能获取接口指针,hr   =   0x80004005(未指定的错误),  
  如果将接口属性加上dual,则能够获取接口指针,但只能正确传递数组第一个元素。  
   
  我使用的是系统提供的标准调度器,COM文档告诉我:使用标准调度器,接口的列集合散集是透明的,为什么会出现这种情况,用EXE   方式实现的接口必须要求是双接口(dual)吗?我很迷惑,请高手指点,500分相送  
   
   
   
   
 

NO.1   作者: lwg7603

1.声明错误:应为HRESULT   Read([in]long   nSize,   [out,   size_is(nSize)]BYTE**   buf);并在实现中修改内存的分配方式!  
  2.不要使用类库列集器,要使用标准列集器(nmake   -f   xxxps.mk,regsvr32   xxxps.dll),因为  
      类库列集器不支持size_is属性~


    摘要: 希望高手讨论,指点! ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE