社区
C#
帖子详情
关于C#调用COM接口并传递接口指针的问题
blackeye2004
2010-11-03 08:32:20
该COM有这样一个接口
HRESULT PutRender(IBaseFilter* pFilter) = 0;
然后我在c#里这样定义
[PreserveSig]
int PutRender([In]IBaseFilter pFilter);
可为什么我传IBaseFilter进去的时候,到COM里就变成COM实例类的指针了,换句话说就是成了this指针了,不知哪位知道为什么吗
...全文
240
4
打赏
收藏
关于C#调用COM接口并传递接口指针的问题
该COM有这样一个接口 HRESULT PutRender(IBaseFilter* pFilter) = 0; 然后我在c#里这样定义 [PreserveSig] int PutRender([In]IBaseFilter pFilter); 可为什么我传IBaseFilter进去的时候,到COM里就变成COM实例类的指针了,换句话说就是成了this指针了,不知哪位知道为什么吗
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
blackeye2004
2010-11-04
打赏
举报
回复
搞掂了,是函数调用方式不同导致的。
blackeye2004
2010-11-03
打赏
举报
回复
不过我即使传普通的int型怎么结果也是莫名其妙的,我传了一个100进去,结果在那里面是8016744
com
调用
的几种方法 及
C#
调用
C++编写的的
COM
DLL
一、
COM
调用
的方法5则: 1,先注册
com
Requirement: 1.创建my
Com
.dll,该
COM
只有一个组件,两个
接口
IGetRes--方法Hello(), IGetResEx--方法HelloEx() 2.在工程中导入组件或类型库 #import "组件所在目录my
Com
.dll" no_namespace 或 #import "类型
C++与
C#
编写的DLL/
COM
的各种
调用
方法
多年来
COM
对象一直是 Windows 编程的基础,不可避免的是,在向.NET过渡时,还是需要继续使用现有的
COM
对象。“互操作性封送处理”是一个打包过程,在将参数和返回值移动到
COM
对象或从
COM
对象移出时,此过程将这些参数和返回值打包为等价的数据类型。公共语言运行库通过名为运行库可
调用
包装 (Runtime Callable Wrapper,RCW) 的代理来公开
COM
对象
有效的使用和设计
COM
智能
指针
——条款10:尽量减少智能
指针
和
接口
指针
的混用
条款10:尽量减少智能
指针
和
接口
指针
的混用 更多条款请前往原文出处:http://blog.csdn.net/liuchang5 在开始一节之前,让我们先来看一个例子: void func(void) { ICalculator *pCalculator =
C#
调用
C++编写的
COM
DLL
在
C#
调用
C++编写的
COM
DLL封装库时会出现两个
问题
:1. 数据类型转换
问题
2.
指针
或地址参数传送
问题
首先是数据类型转换
问题
。因为
C#
是.NET语言,利用的是.NET的基本数据类型,所以实际上是将C++的数据类型与.NET的基本数据类型进行对应。 例如C++的原有函数是: int __stdcall FunctionName(unsig
基于
COM
组件实现
C#
调用
C++类对象过程中的注意事项
需要注意的是,在 ATL 中,IDL(Interface Definition Language) 文件是用来定义
COM
接口
的文件,使用 .idl 后缀名的 IDL 文件中可定义了
COM
接口
的方法、属性和事件等信息。总的来说,ATL 通过使用多重继承和模板技术来实现
COM
组件的开发,
COM
是一种二进制
接口
标准,它提供了一种编程模型,使得不同的应用程序和组件之间可以相互协作。本人以VS20190为例,通过打开ATL工程文件中的类视图,选中所需添加方法或属性的类,右键添加即可。
C#
111,129
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章