2011-11-04 21 views
0

我的firebreath插件項目有一個活動X控件的包裝類。使用BSTR數據類型的錯誤

其中一種方法需要一個BSTR數據類型變量作爲輸入,但是當我嘗試調用該方法並傳遞一個BSTR時,出現錯誤。

我甚至包含了「WTypes.h」頭文件。但是這似乎並沒有解決問題。

所以有人建議一個替代方案。

short MakeCall (BSTR sNumber,short * nConnectionId); 

的MakeCall函數功能通過使用這些paramters

錯誤

Error 1 error C2665: 'FB::variant_detail::conversion::convert_variant' : none of the 5 overloads could convert all the argument types c:\users\research\downloads\firebreath-firebreath-firebreath-1.6.0rc1-15-g411c7fe\firebreath-firebreath-411c7fe\src\scriptingcore\variant.h 842 1 axWrapper 

PS調用由Active X控件實現MakeCall函數功能:我搜索有關該錯誤後,我發現,火的氣息不支持寬字符,即uni代碼。那麼有沒有辦法在firebreath中使用unicode數據類型。

+0

@Taxilian我想你可以幫助 – kairav

+0

你能張貼代碼? –

+0

@Luchian格里戈裏我添加了使用BSTR數據類型 – kairav

回答

2

該錯誤表明您正在嘗試一個FB ::變形轉換成BSTR,這是不是一件FB ::變種知道怎麼做。這很可能意味着您試圖將BSTR用作您在JSAPIAuto對象上註冊的方法中的類型。 JSAPIAuto會自動轉換類型,但你必須使用它理解的類型,而BSTR不是其中之一。

相反,找到任何方法註冊爲JSAPI方法,並將BSTR更改爲std :: wstring;然後將wstring轉換爲BSTR。這應該很好。

FireBreath確實支持unicode;你可以使用std :: wstring作爲寬字符,而來自瀏覽器的std :: string類型將是UTF8。你可以#include「utf8_tools.h」並使用FB :: utf8_to_wstring和FB :: wstring_to_utf8在它們之間進行轉換。

希望這有助於

+0

謝謝!這解決了問題 – kairav

0
#include <atlbase.h> 

應該做的伎倆

+0

沒有什麼變化:( – kairav