小编And*_*s F的帖子

使用C#创建COM扩展 - 值得吗?

我正在处理以下问题: 我们广泛使用的(第三方)软件(软件A)允许使用组件对象模型(COM)接口(实际上是几个接口)对其所谓的"扩展"进行编程.它提供了这些接口的MIDL文件以及作为SDK的一部分的Visual C++的"项目模板"(IDL文件,标题和接口已经存在,只缺少接口函数的实现).为了可以兼容,所有扩展都必须符合(即必须实现)给定的COM接口结构.

但是,由于我对C++的熟悉程度相当有限,我希望在C#和.NET中实现COM - 另一方面,预定义的接口大量使用指针和自定义数据结构,所以我想知道我是否最好不要在他们的原生C++中实现接口,而不是尝试在C#中重新创建所有东西.

还有一点背景:最终目标是从软件A内部控制一块自定义硬件(通过USB).我已经编写了一个使用DLLimport包装驱动程序(另一个第三方软件)的小型.NET应用程序,这令人惊讶无痛.换句话说,我试图构建的COM对象本质上是(第三方)软件A和(第三方)设备驱动程序B之间的桥梁,它必须符合A给出的接口规范.


示例MIDL代码:

[id(0x00000004)]
HRESULT GetWaveData([in] BSTR name,[out] IWaveData**data);
[id(0x00000005)]
HRESULT GetImageData([in] BSTR name,[out] IImageData**data,[out] Palette*Palette);
[id(0x00000006)]
HRESULT SetVariable([in] BSTR name,[in] IVariableData*variable);

c# com interop

2
推荐指数
1
解决办法
385
查看次数

标签 统计

c# ×1

com ×1

interop ×1