私は、C#アプリケーションの中のC++ dllで関数を呼び出す際に問題が発生しています。私はこのようにC#の内部関数を呼び出しています:P invoke in 64bit .net app to C++ 64ビットdll
これは、以下のようにC++ DLLにエクスポートされています。
これを呼び出すと、「外部コンポーネントが例外をスローしました」というメッセージが表示されます。例外は非常に説明的ではなく、非常に役に立たない。
輸出ビューアでDLLをプルアップすると、完全に定量化された宣言(IE public:void __cdecl CryptoPP :: X509PublicKey :: `vbase destructor '(void)__ptr64)を使って、私が呼び出す関数は、関数名RSAEncryptStringを表示するだけです。
これは、私が見ることのできる唯一の可能性のある問題です。おそらく、C#側で無効な宣言で関数を誤って呼び出すことにほかなりません。 System.Runtime.InteropServices.Marshalを使用していますか?
助けをお願い致します。< 3ありがとうございます。
char *を返すC関数は非常に面倒です。古典的な間違いは、ローカル変数へのポインタを返すことです。これは、Cプログラムから呼び出されたときに動作する可能性があります。たとえそれがCコードで正しく行われ、malloc()を使って文字列バッファを割り当てるとしても、依然として解決できないメモリリークがあります。コードの作成者の助けが必要です。 –