前提
- Visual Studio 2013で、C#のクラスライブラリをC++/CLIから呼び出すプログラムを作成しています。
- C#のクラスライブラリ側に実装したメソッド「public int Finalize()」をC++/CLIから呼び出したいのですが、エラー「C2039」が出ており困っています。
実現したいこと
- C#のクラスライブラリ側のメソッドを次のように変更すると呼び出せる事は確認出来ています。
- 「public int Fin()」等、メソッド名を「Finalize」以外にする。
- 「public int Finalize(int param)」等、引数を設定する。
- ただ、諸事情があり可能であればC#側のメソッドは変更せずに「public int Finalize()」の形式のまま呼び出したいです。
- もし、「public int Finalize()」の形式のまま呼び出す実現方法があれば教えていただきたいです。
発生している問題・エラーメッセージ
エラー「C2039」の詳細なエラーメッセージは次の通りです。
ConsoleApplication1.cpp(9): error C2039: 'Finalize' : 'ClassLibrary1::Class1' のメンバーではありません。 c:\xxx\classlibrary1\bin\debug\classlibrary1.dll : 'ClassLibrary1::Class1' の宣言を確認してください。 代わりに、finalizer, '!Class1' を呼び出さなければなりません
該当のソースコード
C#側のソースコード
C#
1namespace ClassLibrary1 2{ 3 public class Class1 4 { 5 public int Finalize() 6 { 7 return 0; 8 } 9 } 10}
C++/CLI側のソースコード
C++/CLI
1using namespace System; 2using namespace ClassLibrary1; 3 4int main(array<System::String ^> ^args) 5{ 6 auto class1 = gcnew Class1(); 7 return class1->Finalize(); 8}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/11/22 18:55
2022/11/24 11:50