C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: アンマネージC++のDLLにwchar_t型を渡すには


(過去ログ 66 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■38768 / inTopicNo.1)  アンマネージC++のDLLにwchar_t型を渡すには
  
□投稿者/ simanoha (1回)-(2009/07/24(Fri) 17:51:39)

分類:[.NET 全般] 

こんにちは。

C++/CLIで、アンマネージC++のDLLクラスをラップして使用するプログラムを書いています。
しかし、DLLを実行する際に、DLLクラス内メソッドの引数に、wchar_t型を渡すと、以下のようなLinkエラーが起きてしまいます。
/*-----ここから-----*/
1>Wrapper.obj : error LNK2028: 未解決のトークン (0A00000A) "public: void __thiscall MyClass::SetWchar(wchar_t)" (?SetWchar@MyClass@@$$FQAEX_W@Z) が関数 "public: void __clrcall Wrapper::SetWchar(wchar_t)" (?SetWchar@Wrapper@@$$FQ$AAMX_W@Z) で参照されました。
1>Wrapper.obj : error LNK2019: 未解決の外部シンボル "public: void __thiscall MyClass::SetWchar(wchar_t)" (?SetWchar@MyClass@@$$FQAEX_W@Z) が関数 "public: void __clrcall Wrapper::SetWchar(wchar_t)" (?SetWchar@Wrapper@@$$FQ$AAMX_W@Z) で参照されました。
/*-----ここまで-----*/

同様の手順でint型を試したときは問題なく動作していました。
アンマネージC++のDLLクラスはUnicode指定で作成しています。

wchar_t型をnative型に合わせる必要がある…?と思うのですが、対処方法が分かりません。
ご存知の方がいましたら、教えていただけないでしょうか。
引用返信 編集キー/
■38773 / inTopicNo.2)  Re[1]: アンマネージC++のDLLにwchar_t型を渡すには
□投稿者/ とおりすがり (4回)-(2009/07/24(Fri) 19:31:57)
__declspec(dllexport) や __declspec(dllimport) が抜けているか、
「wchar_t をビルトイン型として扱う(/Zc:wchar_t)」の設定がリンクする側とされる側で食い違っているか。。。
引用返信 編集キー/
■38786 / inTopicNo.3)  Re[2]: アンマネージC++のDLLにwchar_t型を渡すには
□投稿者/ simanoha (2回)-(2009/07/24(Fri) 23:05:20)
No38773 (とおりすがり さん) に返信
> __declspec(dllexport) や __declspec(dllimport) が抜けているか、
> 「wchar_t をビルトイン型として扱う(/Zc:wchar_t)」の設定がリンクする側とされる側で食い違っているか。。。


wchar_tについて、以下のMicrosoftのページを参照しました。

http://msdn.microsoft.com/ja-jp/library/dh8che7s(VS.80).aspx
http://msdn.microsoft.com/ja-jp/library/cc438596(VS.71).aspx

実行環境として、VC++6.0とVisual Studio2008を使っていたのですが、
これらはwchar_t型の規定が違うのですね!
勉強になりました。

Visual Studio2008の設定を確認したところ、既定のまま、[wchar_t をビルトイン型として扱う] プロパティが「はい」になっていたので、「いいえ」にしました。

結果、無事にビルドが通り、実行結果も期待していた通りになりました。

ありがとうございました!












引用返信 編集キー/
■38787 / inTopicNo.4)  Re[3]: アンマネージC++のDLLにwchar_t型を渡すには
□投稿者/ simanoha (3回)-(2009/07/24(Fri) 23:08:43)
No38786 (simanoha さん) に返信
> ■No38773 (とおりすがり さん) に返信
>>__declspec(dllexport) や __declspec(dllimport) が抜けているか、
>>「wchar_t をビルトイン型として扱う(/Zc:wchar_t)」の設定がリンクする側とされる側で食い違っているか。。。
>
>
> wchar_tについて、以下のMicrosoftのページを参照しました。
>
> http://msdn.microsoft.com/ja-jp/library/dh8che7s(VS.80).aspx
> http://msdn.microsoft.com/ja-jp/library/cc438596(VS.71).aspx
>
> 実行環境として、VC++6.0とVisual Studio2008を使っていたのですが、
> これらはwchar_t型の規定が違うのですね!
> 勉強になりました。
>
> Visual Studio2008の設定を確認したところ、既定のまま、[wchar_t をビルトイン型として扱う] プロパティが「はい」になっていたので、「いいえ」にしました。
>
> 結果、無事にビルドが通り、実行結果も期待していた通りになりました。
>
> ありがとうございました!
>
>
>
>
>
>
>
>
>
>
>
>
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -