我有一个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?
由于
答案 0 :(得分:1)
您可以使用#import
将IHTMLDocument2
的IDL定义纳入MIDL的范围。
MIDL编译器将为您生成#include
。 MIDL文件中的显式#include
仅在非常狭窄的一组极端情况下有用。