0

私のfirebreathプラグインプロジェクトには、アクティブXコントロールのラッパークラスがあります。

メソッドの1つは、入力としてBSTRデータ型変数を取りますが、メソッドを呼び出してBSTRを渡そうとすると、エラーが発生します。

「WTypes.h」ヘッダーファイルもインクルードしました。しかし、それで問題が解決するわけではないようです。

だから誰かが代替案を提案します。

short MakeCall (BSTR sNumber,short * nConnectionId );

Makecall関数は、これらのパラメーターを使用して、アクティブXコントロールによって実装されたMakecall関数を呼び出します。

エラー

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:エラーについて検索した後、火吹きはワイド文字、つまりユニコードをサポートしていないことがわかりました。それで、firebreathでユニコードデータ型を使用する方法があります。

4

2 に答える 2

2

このエラーは、FB :: VariantをBSTRに変換しようとしていることを示しています。これは、FB::variantが実行方法を知っているものではありません。これは、JSAPIAutoオブジェクトに登録したメソッドの型としてBSTRを使用しようとしていることを意味している可能性があります。JSAPIAutoはタイプを自動的に変換しますが、理解できるタイプを使用する必要があり、BSTRはその1つではありません。

代わりに、JSAPIメソッドとして登録されているメソッドを見つけて、BSTRをstd::wstringに変更します。次に、wstringをBSTRに変換します。これは正常に機能するはずです。

FireBreathはUnicodeをサポートしています。ワイド文字にはstd::wstringを使用でき、ブラウザからのstd::string型はUTF8になります。「utf8_tools.h」を#includeし、FB::utf8_to_wstringとFB::wstring_to_utf8を使用してそれらの間で変換できます。

お役に立てれば

于 2011-11-04T15:04:43.133 に答える
0
#include <atlbase.h>

トリックを行う必要があります

于 2011-11-04T12:41:54.163 に答える