我有一個C++庫(Win32),它填充了我想從.NET(IE工具欄)使用的網頁中的一些字段,但我無法弄清楚如何通過COM公開該方法。我已經知道我應該在.idl文件將其添加到界面是這樣的:如何將C++類型的參數類型爲IHTMLDocument *的方法暴露給COM?
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
有什麼辦法我可以將C#中的IHTMLDocument對象傳遞給C++並在C++中修改它的內容,或者COM應該僅用於自動化類型,如BSTR?
感謝
嘗試在''interface'之外移動'#include'。 – spencercw 2012-02-24 11:16:28
@spencercw我想我只能在界面之外導入其他.idls,因爲如果我試圖包含.h,就會得到這個錯誤:'error MIDL2025:syntax error:expect a interface name or DispatchInterfaceName or CoclassName or ModuleName or LibraryName or ContractName或類型規範附近「pragmawarning(禁用:4049)文件:mshtmlc.h' – Andrei 2012-02-24 11:24:19