1
から返されると、BマングルされたLPCTSTR文字列はA、私は2つのプロジェクトを持っている機能
プロジェクトAをしてコンパイルされています
1.標準のWindowsライブラリを
2.マルチバイト文字が
3. NO共通の設定しました言語サポート
プロジェクトBがコンパイルされて:動的なDLL
2.マルチバイト文字が共通の言語を使用して
3を設定するよう
1. MFC支持
次の関数は、プロジェクトAに定義されている:
LPCTSTR CAppProxy::DriverName(IDriverAgent *driver)
{
BSTR bstr;
HRESULT hr = driver->get_Name(&bstr);
CString str = CString(bstr);
return(str);
}
と使用プロジェクトBから呼び出される:
CString name = appProxy->DriverName(driver);
が、ドライバ名が呼び出され、コンテンツを「名前」の名前はゴミです
はいわかりました。私はプロジェクトBのファイルを所有していないので、CStringを返すオプションは私には利用できません –
@AndrewS。プロジェクトAを制御できれば、戻り値の型を変更できます。何らかの理由でProject Bを再コンパイルして新しい関数シグネチャに適合させることができない場合は、良いオプションは残っていません。一つの悪い選択肢は、CStringを 'static'オブジェクトを返すようにすることです。つまり、関数はもはやスレッドセーフではありません。 –