我作一个在ASP中使用的组件。用vc6的ATL COM AppWizard生成的框架。增加一个接口。作完后发现无论在VB中还是ASP脚本中CreateObject时都出现错误。提示不能创建对象。请问这是什么原因造成的。我试着什么方法也不添加也是这样的问题。请问是不是向导生成有问题。还是需要做什么工作才可以?
急!急!

解决方案 »

  1.   

    你注册了控件没有?
    在VB中引用这个DLL,就不用CreateObject了,直接声明对象。
      

  2.   

    注册了。在VB中引用的方式可以用。但是用CreateObject为什么就不行了呢?我主要是想用到asp中的,所以如果CreateObject不行,就完了不能用了。
      

  3.   

    那可能就是CreateObject里的参数不对。
      

  4.   

    引用的方式可以用。CreateObject没有道理出错。CreateObject("库名.接口名");
      

  5.   

    还有一个问题,如果我的函数中用到的参数想在内部修改后还传回来这样用可以吗?
    [id(1), helpstring("method test")] HRESULT test(int *umber,int *pd,int *number);
      

  6.   

    [id(1), helpstring("method test")] HRESULT test([out,retval]int *umber,[out,retval]int *pd,[out,retval]int *number);
      

  7.   

    不好意思写错了一点。
    [id(1), helpstring("method test")] HRESULT test([out]int *umber,[out]int *pd,[out]int *number);这样就可以达到你的要求。
      

  8.   

    可以用,但是我用VB时要先定义变量类型,否则就提示不匹配。如果在asp中无法定义类型怎么用呢?
      

  9.   

    ColderRain(一切尽在不言中) 再来看一眼吧。
    你肯定一下子就解决了。
    我吃饭去回来就结贴。
      

  10.   

    asp中也可以定义类型的。参考vb我记得很象的。但是我不记得了
      

  11.   

    >不是啊。我就是用创建引用方式一样的名字创建的。是拷贝过去的。不会错的。
    在 VB 中采用引用组件,然后 Dim 声明的时候,用的不是 ProgID,而是 TypeLib Name.CoClassName而在 CreateObject() 中,应该提供的是 ProgID,如果把 VB 中引用方式定义用的名字复制用于 CreateObject 方式,就不对了。如果不知道你的 ProgID,可以在 FileView 的 ResourceFiles 分类中找到 xxxx.rgs 文件,
    打开看看 ProgID 的值。一般是 项目名.InterfaceNamehehe 应该就是这个原因了。
      

  12.   

    asp 中不能定义类型。你的问题原因估计是你传入的参数被 ASP 识别为 String 了。所以,你可以先“显式”地转换一下类型,然后再传递给你的组件。例如:Dim strNumber, lngNumberstrNumber = "123"
    lngNumber = CLng(strNumber) '这里省略了错误处理,否则应该先用 IsNumeric 来确保是一个有效的数字,然后用错误陷阱捕捉处理溢出的情况。Call test(lngNumber)
    .....