我在VC下调用VB制作的active dll  函数原型是SendDataToDevice(string a,string b) as boolean 在VC下具体调用过程是这样的
   _clsJB object;   BSTR bstr1,bstr2;
   CString a("c:\lxy\");
   CString b("FF.DBF");
   bstr1=a.AllocSysString();
   bstr2=b.AllocSysString();
   
   object.SendDataToDevice(&bstr1,&bstr2);   
直接运行,按键无反映,单步调试出现下面一段话
attempt to call invoke with NULL m_lpDispatch!
请问是什么故障?怎么造成的?谢谢

解决方案 »

  1.   

    _clsJB object; // 这样创建不会成功的吧?object.SendDataToDevice(&bstr1,&bstr2); // 调用的时候不要 &
      

  2.   

    CString a("c:\lxy\");应该是 CString a("c:\\lxy\\");
      

  3.   

    CString a("c:\lxy\");应该是 CString a("c:\\lxy\\");
    =================================================
    VC下所有的路径都要用\\
      

  4.   

    _clsJB object; // 这样创建不会成功的吧?object.SendDataToDevice(&bstr1,&bstr2); // 调用的时候不要 &因为加载在工程后它就以类的形式存在,_clsJB object这样不对的话应该怎么做呢?
      

  5.   

    CString a("c:\lxy\");应该是 CString a("c:\\lxy\\"); 我按这些改后还是提示
    attempt to call Invoke with NULL m_lpDispatch!
      

  6.   

    你是用 VC 做程序吗?
    如果是,以下语句肯定是无法执行的(当然,编译可能能通过)。
    _clsJB object;参考:
    http://www.cppblog.com/azhisoft/azhisoft/articles/426.html
      

  7.   

    activex 在VC下调用不是这样的。可以用CreateInstance()。