【发布时间】:2012-02-24 19:35:17
【问题描述】:
我有一个 C++ 库 (Win32),它填充了我想从 .NET(IE 工具栏)使用的网页中的一些字段,但我不知道如何通过 COM 公开该方法。我已经知道我应该将它添加到 .idl 文件中的接口中,如下所示:
interface IPlugin : IDispatch{
#include <mshtml.h>
HRESULT FillFields(IHTMLDocument2* pDocument, BSTR value1, BSTR value2);
};
但是 mshtml.h 的#include 给了我以下错误:
error MIDL2003: redefinition : _LARGE_INTEGER
error MIDL2003: redefinition : _ULARGE_INTEGER
error MIDL2003: redefinition : INT
error MIDL2003: redefinition : Int64ShllMod32
有什么方法可以将 IHTMLDocument 对象从 C# 传递到 C++ 并在 C++ 中修改它的内容,或者 COM 是否应该仅用于自动化的类型,如 BSTR?
谢谢
【问题讨论】:
-
尝试将
#include移出interface。 -
@spencercw 我想我只能在界面之外导入其他 .idls,因为如果我尝试包含 .h 会出现此错误:
error MIDL2025: syntax error : expecting an interface name or DispatchInterfaceName or CoclassName or ModuleName or LibraryName or ContractName or a type specification near "pragmawarning( disable: 4049 ) File: mshtmlc.h
标签: c# c++ com com-interop