none
エラー CS0570 RRS feed

  • 質問

  • こんにちは、お世話になります。

    下記のようなC++/CLIで作ったClassを
    C#から参照しようしています。

    が、コンパイル時に『エラー CS0570』になってしまいます。
    このクラスをC#で参照する方法はないでしょうか?

    環境はVS2005です。
    どうぞよろしくお願い致します。

    //////////////////////////////////
    // CliClass.h (C++/CLI)

    #pragma once

    using namespace System;

    namespace CliClass {

     public ref class Class1
     {
     public :
      int c1;
     };

     public ref class Class2
     {
     public :
      Class1 cs1;
      int c2;
     };
    }
    //////////////////////////////////

    //////////////////////////////////
    // ClassUserControl1.cs (C#)
     :
    using CliClass;

    namespace CsControlLibrary1
    {
        public partial class UserControl1 : UserControl
        {
            public void testfunc(Class2 testclss)
            {
                int wk1 = testclss.cs1.c1;
            }
        }
    }
    //////////////////////////////////

    //////////////////////////////////
    ..\ClassUserControl1.cs(21,26): エラー CS0570: 'CliClass.Class2.cs1' はこの言語によってサポートされていません。
    //////////////////////////////////

    2008年2月13日 6:41

回答

すべての返信

  • 外池と申します。

     

    もしかして、一つのプロジェクトで、C#と、C++/CLIを、チャンポンにしようとされています? それは、無理じゃないかと。

    プロジェクトを二つに分けてはいかがでしょう?

     

    一つは、C++/CLIで、クラスライブラリーを作るプロジェクトにして、CliClassを提供するDLLを生成するようにします。

     

    もう一つは、C#のプロジェクトにして、上述のDLLを参照するようにします。(あ、これも、一種のクラスライブラリーか。それでもいいですが、最初は、普通にコンソールアプリのEXEで試してみてください。)

     

    私は、VBとC#をこの方法でチャンポンにしたりしています。

     

    2008年2月13日 7:04
  •  sskhrsh さんからの引用

      Class1 cs1;

     

    C# は参照型は全て参照でないと扱えません。

    C++/CLI では Class1^ に該当します。

    2008年2月13日 7:26
  • 外池様、

    早速の回答ありがとうございます。

    すみません、.netは初心者なもので、
    私の認識が間違っていて、もしかしたらちゃんぽんになっているかもしれませんが、
    一応プロジェクトは分けているつもりです。

     

    プロジェクトとしては、
    通常、C++/CLIで作ったMainのFormからファイルI/OをするC++/CLIのクラス(DLL)でファイルを読み
    その内容をC#で作ったFormに貼り付けたカスタムコントロールに描画しています。

    ところがC#のカスタムコントロールからファイルI/Oのクラス(DLL)を参照する
    必要があって、組み込んでみたらエラー CS0570 が発生しました。

     

    本物はちょっと大きなクラスなので簡単に回避出来るとうれしいのですが・・・

     

    2008年2月13日 7:51
  •  Hongliang さんからの引用
     sskhrsh さんからの引用

      Class1 cs1;

     

    C# は参照型は全て参照でないと扱えません。

    C++/CLI では Class1^ に該当します。

     

    ありがとうございます。理解出来ました。
    ちょっと大変ですが、今日中に直せそうです。

     

    大変助かりました。

     

    2008年2月13日 7:55