我用VC6的ATL COM AppWizard生成的Dll用在ASP中。编译后CreateObject失败?是什么问题。 我作一个在ASP中使用的组件。用vc6的ATL COM AppWizard生成的框架。增加一个接口。作完后发现无论在VB中还是ASP脚本中CreateObject时都出现错误。提示不能创建对象。请问这是什么原因造成的。我试着什么方法也不添加也是这样的问题。请问是不是向导生成有问题。还是需要做什么工作才可以?急!急! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你注册了控件没有?在VB中引用这个DLL,就不用CreateObject了,直接声明对象。 注册了。在VB中引用的方式可以用。但是用CreateObject为什么就不行了呢?我主要是想用到asp中的,所以如果CreateObject不行,就完了不能用了。 那可能就是CreateObject里的参数不对。 引用的方式可以用。CreateObject没有道理出错。CreateObject("库名.接口名"); 还有一个问题,如果我的函数中用到的参数想在内部修改后还传回来这样用可以吗?[id(1), helpstring("method test")] HRESULT test(int *umber,int *pd,int *number); [id(1), helpstring("method test")] HRESULT test([out,retval]int *umber,[out,retval]int *pd,[out,retval]int *number); 不好意思写错了一点。[id(1), helpstring("method test")] HRESULT test([out]int *umber,[out]int *pd,[out]int *number);这样就可以达到你的要求。 可以用,但是我用VB时要先定义变量类型,否则就提示不匹配。如果在asp中无法定义类型怎么用呢? ColderRain(一切尽在不言中) 再来看一眼吧。你肯定一下子就解决了。我吃饭去回来就结贴。 asp中也可以定义类型的。参考vb我记得很象的。但是我不记得了 >不是啊。我就是用创建引用方式一样的名字创建的。是拷贝过去的。不会错的。在 VB 中采用引用组件,然后 Dim 声明的时候,用的不是 ProgID,而是 TypeLib Name.CoClassName而在 CreateObject() 中,应该提供的是 ProgID,如果把 VB 中引用方式定义用的名字复制用于 CreateObject 方式,就不对了。如果不知道你的 ProgID,可以在 FileView 的 ResourceFiles 分类中找到 xxxx.rgs 文件,打开看看 ProgID 的值。一般是 项目名.InterfaceNamehehe 应该就是这个原因了。 asp 中不能定义类型。你的问题原因估计是你传入的参数被 ASP 识别为 String 了。所以,你可以先“显式”地转换一下类型,然后再传递给你的组件。例如:Dim strNumber, lngNumberstrNumber = "123"lngNumber = CLng(strNumber) '这里省略了错误处理,否则应该先用 IsNumeric 来确保是一个有效的数字,然后用错误陷阱捕捉处理溢出的情况。Call test(lngNumber)..... (急求)在基于对话框MFC程序中,如何在辅助线程中实现绘图? 谁做过视频聊天 【☆】如何改变AfxMessageBox()的背景色??? ActiveXObject问题 vc要做个视频采集的程序 不用MFC,如何使用CFileFind 类? 关于对IE临时文件的操作。。 紧急在线求助:找回硬盘分区 100分不成敬薏 这里有没有人用VC做过MAPINFO的调用,有问题请教,请进。 我不学MFC,直接ATL可以么 任命flyelf为大版主 100分求oracle数据库备份源代码,分不够在加。
在VB中引用这个DLL,就不用CreateObject了,直接声明对象。
[id(1), helpstring("method test")] HRESULT test(int *umber,int *pd,int *number);
[id(1), helpstring("method test")] HRESULT test([out]int *umber,[out]int *pd,[out]int *number);这样就可以达到你的要求。
你肯定一下子就解决了。
我吃饭去回来就结贴。
在 VB 中采用引用组件,然后 Dim 声明的时候,用的不是 ProgID,而是 TypeLib Name.CoClassName而在 CreateObject() 中,应该提供的是 ProgID,如果把 VB 中引用方式定义用的名字复制用于 CreateObject 方式,就不对了。如果不知道你的 ProgID,可以在 FileView 的 ResourceFiles 分类中找到 xxxx.rgs 文件,
打开看看 ProgID 的值。一般是 项目名.InterfaceNamehehe 应该就是这个原因了。
lngNumber = CLng(strNumber) '这里省略了错误处理,否则应该先用 IsNumeric 来确保是一个有效的数字,然后用错误陷阱捕捉处理溢出的情况。Call test(lngNumber)
.....