2 つのサードパーティ ライブラリを使用するプロジェクトがあり、どちらもヘッダー ファイルで TCHAR を使用します。残念ながら、1 つのライブラリはマルチバイトとしてコンパイルされ (ライブラリ a と呼びます)、もう 1 つのライブラリは Unicode としてコンパイルされます (ライブラリ b と呼びます)。
今私が理解している方法は、プリコンパイラによって TCHAR がビルドオプションに応じて wchar または char に置き換えられるということです。そのため、ライブラリ a がコンパイルされたとき、TCHAR 型のパラメータを受け取るメソッドは char 型のパラメータを期待するように設定され、ライブラリ b のメソッドは wchar 型のパラメータを期待するように設定されています。
残念ながら、消費するアプリケーションも文字セットを選択する必要があります。Unicode を選択すると、ライブラリ a にインクルードしたヘッダー ファイルは、メソッドが wchar を必要としていることを示します。これは、ヘッダー内の TCHAR をコンパイルすると wchar として解釈されるためです。これには、構造内で定義された TCHARS が含まれます。この動作を実際に確認しました。TCHAR バッファを割り当てて渡すと、wchar バッファがマルチバイト データでいっぱいになるため、ガベージが返されます。
私の質問は次のとおりです。これらのライブラリの両方を同じアプリケーションで使用するクリーンな方法はありますか? これらのライブラリの使用方法に何か問題があるのでしょうか?