.NET
.NET ソフトウェア フレームワークに基づく Microsoft テクノロジ。
65 件の質問
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
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
自己解決しました。
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