アンマネージドクラスをnewできない


HT  2005-12-26 08:02:36  No: 60054

VC++ .NET2003で、.NETクラスライブラリを作成しています。

マネージドクラス内でアンマネージドクラス(__nogc)をnewすると、なぜかリンクエラーになります。operator newが見つからないと出ます。

Formアプリの場合は、問題なくnewできます。
クラスライブラリの場合、なにかオプション設定が必要なのでしょうか?


Blue  2005-12-26 08:44:06  No: 60055

具体的にどのように宣言して、どうnewしているのか書かれた方が良いです。

一応
C++: マネージ拡張リファレンス  __nogc
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vcmex/html/vclrf__nogc.asp

明示的に new のまえに __nogc を付けてみるとか。


HT  2005-12-27 07:05:55  No: 60056

明示的__nogcを付けてみましたが、リンカエラーは出たままです。
Formアプリで動いていたものを、クラスライブラリに移しただけなんですが・・・

 namespace Test
{
   __nogc class NoGCClass
    {
    public:
        void Test() {}
    };

    public __gc class GCClass
    {
    public:
        void Test()
        {
            NoGCClass* p = __nogc new NoGCClass();
            p->Test();
        }
    };
}

ひょっとしたら、これが関係するのかも。
混合モードってなんだ?
クラスライブラリの場合だけ、ナゼこんな・・・
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vcmex/html/vclrf__nogc.asp


HT  2005-12-27 07:15:15  No: 60057

リンク先が間違ってました。
http://www.microsoft.com/japan/msdn/library/ja/vcmex/html/vcconclasslibrarytemplate.asp

クラスライブラリはCRTにリンクされない、とあるので、
関係あるかも・・・


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加