こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

アンマネージドC++のDLLを使うと、wchar_t型のみビルドエラー

アンマネージドC++のDLLを使うと、wchar_t型のみビルドエラー

アンマネージドのC++(VC++6.0)で作成したDLLを、マネージドのC++(VisualStudio2008)で利用したいと考えています。
しかし、DLL中の関数のうち、wchar_t型を返す関数のみビルドが通らずにerror LNK2028が表示されます。

試しに、アンマネージドのC++プロジェクトからこのDLLを利用したところ、問題なくビルドが通りました。
何かマネージドのプロジェクトに必要な設定が抜けているのでしょうか。
(DLLは_UNICODEを指定しています。)

それぞれ、以下のように記述しています。

よろしくお願いいたします。

// アンマネージドC++ (テスト用ですので、関数内の処理は正確なものではありません)
class DLL_EXPORT MyClass
{
public:
char CharTest();
wchar_t WCharTest();
};

char MyClass::CharTest()
{
char c = 'a';
return c;
}

wchar_t MyClass::WCharTest()
{
wchar_t wc = L'a';
return wc;
}

// マネージドC++
int main(array<System::String ^> ^args)
{
MyClass *p = new MyClass();
p->CharTest(); // OK
p->WCharTest(); // ビルドエラー

return 0;
}

// エラー内容
エラー 1 error LNK2028: 未解決のトークン (0A000008) "public: wchar_t __thiscall MyClass::WCharTest(void)" (?WCharTest@MyClass@@$$FQAE_WXZ) が関数 "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z) で参照されました。 UnManagedDLLUserFromManaged.obj UnManagedDLLUserFromManaged

投稿日時 - 2010-03-28 00:57:50

QNo.5784367

すぐに回答ほしいです

質問者が選んだベストアンサー

すみません、解決しました。(別ユーザで失礼します)

Visual Studio2008の設定で[wchar_t をビルトイン型として扱う] プロパティをいいえに変更することで解決しました。

投稿日時 - 2010-03-28 02:06:43

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)