社区
ATL
帖子详情
Com的一个问题?
viewer
2000-08-08 09:21:00
本人正在学习Com,现有一个问题请教:我作了一个Automation客房程序,使用了
#import "....tlb" ...这种方法来驱动组件,这个有一个IBank的接口,书上
说可以通过IBankPtr这个智能指针来使用这个接口,但编译时老是提示没有
IBankPtr的定义,请问是为什么? 谢谢!
...全文
318
3
打赏
收藏
Com的一个问题?
本人正在学习Com,现有一个问题请教:我作了一个Automation客房程序,使用了 #import "....tlb" ...这种方法来驱动组件,这个有一个IBank的接口,书上 说可以通过IBankPtr这个智能指针来使用这个接口,但编译时老是提示没有 IBankPtr的定义,请问是为什么? 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
blackjack
2000-09-07
打赏
举报
回复
idl中有一句library 名字空间,
名字空间::IBankPtr ptr(__uuidof(名字空间::类工厂名))
//OK
举个例子吧,Com对象的.IDL如下:
import "oaidl.idl";
import "ocidl.idl";
[
object,
uuid(0B463456-8499-11D4-95B2-5254ABDD134B),
dual,
helpstring("Inc Interface"),
pointer_default(unique)
]
interface Inc : IDispatch
{
[id(1), helpstring("method DoShow")] HRESULT DoShow([in]BSTR bstrMessage);
[propget, id(2), helpstring("property IntValue")] HRESULT IntValue([out, retval] long *pVal);
[propput, id(2), helpstring("property IntValue")] HRESULT IntValue([in] long newVal);
};
[
uuid(0B463441-8499-11D4-95B2-5254ABDD134B),
version(1.0),
helpstring("cp 1.0 Type Library")
]
library CPLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
[
uuid(0B463457-8499-11D4-95B2-5254ABDD134B),
helpstring("nc Class")
]
coclass nc
{
[default] interface Inc;
};
};
以上.IDL仅功参考,com调用时不一定要,对象调用如下:
#include <windows.h>
#include <comdef.h>
#import "D:\vc++\cp\Debug\cp.dll"//对象的DLL的路径
int main(){
CoInitialize(NULL);
try {
CPLib::IncPtr/*接口指针*/ pInc(__uuidof(CPLib::nc/*类工厂名*/));
_bstr_t bstrMessage=L"Hello";
pInc->put_IntValue(007L);
pInc->DoShow(bstrMessage);
}
catch(const _com_error &e){
MessageBox(0,
(LPCTSTR)e.ErrorMessage(),
(LPCTSTR)"Com error",
MB_OK);
}
CoUninitialize();
return 0;
}
zcheny
2000-08-26
打赏
举报
回复
正确格式应该为
#import "...tlb" no_namespace
因为#import会自动建立一个以CLSID命名的一个名字空间,你需要用no_namespace使该空间的所有标示符能被全局访问。
xubin_sh
2000-08-10
打赏
举报
回复
用了名字空间了吗?
如果还不对的话不要import tlb文件,import dll文件试试看
ping不通github.
com
怎么办?
今天遇到一个
问题
ping不同github官网 以后大家遇到相同的情况可以尝试一下,不保证每次都能成功,但是是个解决办法 首先想到的应该是dns
问题
, 但是又不知道使用哪个dns能解决
问题
最后从网上找到办法,windows可以...
什么是跨域
问题
?跨域解决
问题
同源策略是一种约定,它是浏览器最核心也是最基本的安全功能,如果缺少了同源策略,则浏览器的正常的功能可能会受到影响,跨域收是Web是构建在同源策略基础上的,浏览器只是针对同源策略的一种实现,同源策略会阻止一个域...
什么是跨域及怎么解决跨域
问题
?
什么是跨域? ... 跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,...所谓同源是指,域名,协议,端口均相同,只要有一个不同,就是跨域。不明白没关系,举个栗子: http://www.123.
com
/i...
SpringBoot 中到底如何解决跨域
问题
?
同源策略是浏览器的一个重要的安全策略,它用于限制一个源的文档或其加载的脚本如何与另外一个源进行交互,它能够隔绝恶意文档,减少被攻击的媒介。如果两个URL的协议、主机名和端口号都是相同的,那么这两个URL就是...
如何自己制作一个路由器?
如何自己制作一个路由器? 硬件方面需要哪些?路由器上的一些协议也自己实现,有哪些资料参考? 关注者 167 被浏览 30,194 4 个回答 Andrew Song 华为技术有限公司 硬件工程师 我建议题主先写下...
ATL
3,245
社区成员
48,537
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章