VB.netでのコンパイルエラー:サポートされていない戻り値の型か、またはサポートされていないパラメーター型が指定されています。

huahi11115 340 評価のポイント
2024-09-06T03:23:35.9033333+00:00

Microsoft Visual Studio Community 2022 (64 ビット) - Current Version 17.11.2

.Net Framework 4.8.1

C++/CLIでマネージド型のDLLを作成し、VB.netで参照しています。

DLLは正常にビルドできています。

<C++/CLI>

	public ref class testclass1 {
	public:
		int i1() {return -1;}
	};


	public ref class testclass2 {
	public:
		int test1() {return 100;}

		//testclass1 のインスタンスの指定方法は、これで合っていると思う。
		int test2(testclass1 nn1) {return nn1.i1();}
	};

これをVB.netから使用すると、BC30657(下のソース参照↓)というコンパイルエラーが出ます。

この解決方法がわからないので、教えて下さい。

<VB.net>

    Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
      Dim n1a As New testclass1()
      Dim i10 = n1a.i1() '-1が入る
      Dim n2a As New testclass2()
      Dim i20 = n2a.test1() '100が入る
      '■(1)この下の行 test2 の部分ででコンパイルエラーが発生する
      Dim i30 = n2a.test2(n1a) ' BC30657 test2 には、サポートされていない戻り値の型か、またはサポートされていないパラメーター型が指定されています。
   End Sub
.NET
.NET
.NET ソフトウェア フレームワークに基づく Microsoft テクノロジ。
65 件の質問
C++
C++
C プログラミング言語の拡張機能として作成された高レベルの汎用プログラミング言語。低レベルのメモリ操作機能に加えて、オブジェクト指向、汎用、関数型の機能を備えています。
20 件の質問
VB
VB
.NET Framework 上に実装される、Microsoft によって開発されたオブジェクト指向プログラミング言語。 旧称 Visual Basic .NET。
10 件の質問
0 件のコメント コメントはありません
{count} 件の投票

1 件の回答

並べ替え方法: 最も役に立つ
  1. huahi11115 340 評価のポイント
    2024-09-06T06:29:16.9166667+00:00

    自己解決しました。

    VB.netで、C++/CLIで作成したDLLと同じ物を作成したら正常動作したため、見比べてC++/CLIのコーディングの間違いに気付きました。

    <C++/CLI>

    public ref class testclass1 {
    
    public:
    
    	int i1() {return -1;}
    
    };
    
    public ref class testclass2 {
    
    public:
    
    	int test1() {return 55;}
    
    	*int test2(testclass1 ^nn1) {return nn1->i1()*100; }//この行が間違っていた*
    
    };
    

    <VB.net>

    Class MainWindow

    Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded

      Dim n1a As New testclass1()
    
      Dim i10 = n1a.i1() '-1が入る
    
      Dim n2a As New testclass2()
    
      Dim i20 = n2a.test1()
    
      Dim i30 = n2a.test2(n1a) '-100が入った
    

    End Sub

    End Class

    0 件のコメント コメントはありません

お客様の回答

回答は、質問作成者が [承諾された回答] としてマークできます。これは、ユーザーが回答が作成者の問題を解決したことを知るのに役立ちます。