社区
ATL
帖子详情
ATL问题,很急,今天晚上一定要搞定
alphagx
2002-06-12 11:01:02
我的一个ATL组件,是EXE文件,
我用VBScript能调用,
当用VC的CoCreateInstance却不行,返回的错误值是0X80029C4A
...全文
174
23
打赏
收藏
ATL问题,很急,今天晚上一定要搞定
我的一个ATL组件,是EXE文件, 我用VBScript能调用, 当用VC的CoCreateInstance却不行,返回的错误值是0X80029C4A
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
alphagx
2002-06-15
打赏
举报
回复
欢迎大家继续讨论。。。。。
rick1126
2002-06-15
打赏
举报
回复
还有提醒一点, 我发现组件在中文目录里面注册成功也无法调用, 不知道大家有没有类似情况.
chenybin
2002-06-15
打赏
举报
回复
UP!!!!!!!!!!
spidertan
2002-06-14
打赏
举报
回复
Up!
alphagx
2002-06-14
打赏
举报
回复
我也感觉特别奇怪,
我后来自己重新生成了一个项目,
一切OK。
虽然我的IDR_NpsData资源的语言类型为chinese(P.R.C)
TO: loyee
请到
http://www.csdn.net/expert/topic/797/797141.xm
拿分,这个帖子的问题我在这儿已经问了。
loyee
2002-06-13
打赏
举报
回复
CoCreateInstance(...)中你的CLSID跟INTERFACE ID是什么呢?是否也可以说一下你的参数?
alphagx
2002-06-13
打赏
举报
回复
这是接口的RGS文件
HKCR
{
NPSData.ConfigData.1 = s 'ConfigData Class'
{
CLSID = s '{60FB529A-4FD6-479D-9D09-33F413E52AE6}'
}
NPSData.ConfigData = s 'ConfigData Class'
{
CLSID = s '{60FB529A-4FD6-479D-9D09-33F413E52AE6}'
CurVer = s 'NPSData.ConfigData.1'
}
NoRemove CLSID
{
ForceRemove {60FB529A-4FD6-479D-9D09-33F413E52AE6} = s 'ConfigData Class'
{
ProgID = s 'NPSData.ConfigData.1'
VersionIndependentProgID = s 'NPSData.ConfigData'
ForceRemove 'Programmable'
LocalServer32 = s '%MODULE%'
val AppID = s '{DE7B0787-4F8E-4396-ADCB-380F135CEB3A}'
'TypeLib' = s '{B774E89A-EBAE-4E7E-B1F4-9C599AAAB916}'
}
}
}
alphagx
2002-06-13
打赏
举报
回复
在VBScript中运行正常,
在CoCreateInstance(....)前面调用了
CoInit...
RGS文件中的 内容
HKCR
{
NoRemove AppID
{
{DE7B0787-4F8E-4396-ADCB-380F135CEB3A} = s 'NPSData'
'NPSDATA.EXE'
{
val AppID= s {DE7B0787-4F8E-4396-ADCB-380F135CEB3A}
}
}
}
zdhe
2002-06-13
打赏
举报
回复
if you use own proxy/stub, you must registry AppID ...
in vbscript, the download package have generated this , and when donwload finish, IE automatically registered it.
you does need regist everything you need. when directly use in VC..
loyee
2002-06-13
打赏
举报
回复
正常情况下,在你的ATL对象的_tWinMain(...)中有下面的一段代码.
while (lpszToken != NULL)
{
if (lstrcmpi(lpszToken, _T("UnregServer"))==0)
{
_Module.UpdateRegistryFromResource(IDR_NpsDAta, FALSE);
nRet = _Module.UnregisterServer(TRUE);
bRun = FALSE;
break;
}
if (lstrcmpi(lpszToken, _T("RegServer"))==0)
{
_Module.UpdateRegistryFromResource(IDR_NpsDAta, TRUE);
nRet = _Module.RegisterServer(TRUE);
bRun = FALSE;
break;
}
lpszToken = FindOneOf(lpszToken, szTokens);
}
注意查看ATL对象的资源表中IDR_NpsDAta内容,位于"Registry"段中.IDR_NpsDAta就是你要写入\\HKEY_CLASSED_ROOT\APPID中的内容.为了更加保险,确定IDR_NpsDAta资源的语言类型为Englist(U.S.).
ATL有关写登记项内容是标准的过程.我想你没有必要自己用Reg...系列函数自己些.
如果你用VC模板生成ATL对象的话,好象不应该有这个问题的.
daehappy
2002-06-13
打赏
举报
回复
up!关注!
loyee
2002-06-13
打赏
举报
回复
调用方式应该没有什么问题.如果查了DLL没有缺少并且DLL版本都符合你运行ATL条件还是有问题的话,是否可以尝试下面的方法来调用ATL对象.
下面的方式应该跟你VBScript中调用非常接近.注意#import后面要跟你ATL对象文件名实际路径.using namespace后也要是你ATL对象的名字空间.根据你的登记项内容,NPSDATALib应该是Default名字.同时不要包含ATL对象一些接口的头文件.
如果确定ATL对象在VBScript能够运行的话,最大可能是VC中调用ATL对象方式的问题.只是用CoCreateInstance(...)没法调用的确很奇怪.
还有一个建议是,屏蔽ATL对象中的具体代码.只保留相同的接口,方法,属性等框架.用CoCreateInstance(...)调用看看是否可以创建ATL对象的实例,如果可以的话,然后再慢慢添加具体代码,找到哪些代码导致0x80029C4A的错误码.如果不行的话,应该是调用ATL对象方式的问题了.
#import "NPSData.exe"
using namespace NPSDATALib;
void LoadATL()
{
IConfigDataPtr pConfigData;
HRESULT hr;
CoInitialize(NULL);
hr = pConfigData.CreateInstance("'NPSData.ConfigData");
......
}
alphagx
2002-06-13
打赏
举报
回复
hr = CoCreateInstance( CLSID_ConfigData,
NULL,
CLSCTX_ALL,
IID_IConfigData,
(void**) &ptrConfigData );
loyee
2002-06-12
打赏
举报
回复
也不能说注册绝对没有问题. LoadRegTypeLib ()系列的函数调用会导致这个错误.而这些函数都需要访问注册表.只是他对问题的描述还不够太具体.
是否可以把ATL对象的注册表内容贴出来?在VBScript中调用确定正常吗?CoCreateInstance(...)前面是否调用了CoInitialize(...)或进行其他初始话COM环境的操作?
alphagx
2002-06-12
打赏
举报
回复
我在组件中使用了ADO,我的系统是Win2K Server Sp2,
上面是空的系统,没有安装VC,VB之类的
alphagx
2002-06-12
打赏
举报
回复
But I can create and call the ATL Sever with VBScript..
Savage_ts
2002-06-12
打赏
举报
回复
估计注册没有问题,要是有这个错误的话,就根本不能注册。错误是不能加载库,你可以去查一下MSDN
loyee
2002-06-12
打赏
举报
回复
#define TYPE_E_CANTLOADLIBRARY _HRESULT_TYPEDEF_(0x80029C4AL)
在创建ATL对象的时候,你在ATL内部是否调用了其他DLL?查看该DLL是否在运行的机器里面.
用DEPENDS工具查看你的ATL运行时需要的DLL,并查看这些运行环境在创建ATL对象的机器里面是否具备.
如果你的ATL依赖第三方开发环境,查看是否安装了第三方部件的运行环境.
Savage_ts
2002-06-12
打赏
举报
回复
能把问题说清楚点吗?
iterator
2002-06-12
打赏
举报
回复
//
// MessageId: TYPE_E_CANTLOADLIBRARY
//
// MessageText:
//
// Error loading type library/DLL.
//
#define TYPE_E_CANTLOADLIBRARY _HRESULT_TYPEDEF_(0x80029C4AL)
注册有问题吧?
加载更多回复(3)
微信小程序仿今日头条小程序端界面和代码演示
基于帝国cms 7.5 utf-8版的今日头条小程序下载地址: http://www.sjmoban.com/sucai/3.html 程序本版包含: 1.获取分类列表 2.获取新闻列表 3.查看新闻内容 4.列表左右滑动,动态加载,滑到底部自动加载更多。 本小程序客户端将持续更新,谢谢关注。 ...
新闻APP源码项目实战:微信小程序开发与解析
本章深入探讨了新闻类APP的UI设计与实现方式,从设计原则到具体组件实现,从首页布局到详情页交互,再到主题与样式管理,全面覆盖了新闻APP前端开发的核心内容。每一部分均提供了可落地的代码实现、参数说明与流程图辅助理解,帮助开发者构建高质量、高体验的新闻应用。
uni-app优秀插件
组件库 ThorUI ColorUI UI界面和组件 轮播图系列 高级轮播图 精致的图片展示组件,自定义面板指示点,可配置性强 大小图轮播,类似手机相册 图片轮播,商品详情图 QSwiper组件 切换动画很强大 一款由自定义元素组成的有过渡动画及背景渐变的swiper、引导页,切分为元素解决了小程序占内存大
问题
画廊(ynGallery)组件 类似轮播但不是 通用画廊(ynGallery)组件 流畅的滑动感 类似于猫眼影廊 体验感不错 带缩放的轮播 轮播不能用于H5 uni.createAnimat
2.4米升降机提升机输送带机.rar
2.4米升降机提升机输送带机.rar
Python Savitzky-Golay LSTM管网压力预测 平滑滤波出图
Python Savitzky-Golay LSTM管网压力预测 平滑滤波出图 Savitzky-Golay 平滑滤波管网小时压力后 LSTM 预测,对比原序列 LSTM,输出平滑对比图与预测曲线。 功能: · 合成管网压力小时序列 MPa(日周期+脉冲浪涌) · scipy.signal.savgol_filter 平滑(窗口 11 阶 3) · LSTM 对比原序列与 Savgol 平滑 · decomp.png 平滑对照 · forecast.png+metrics.csv · 打包时预跑 output/preview 压缩包含可运行源码、依赖与说明,按 README 安装后即可复现。
ATL
3,248
社区成员
48,530
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章