ac#アプリ内のc++dllで関数を呼び出す際に問題が発生しました。私は次のようにc#内で関数を呼び出しています:
[DllImport("cryptopp.dll")]
public static extern IntPtr RSAEncryptString(string filename, string seed, string message);
以下に示すように、c++dllにエクスポートされています。
extern "C" __declspec(dllexport) const char* __cdecl RSAEncryptString(const char *pubFilename, const char *seed, const char *message);
ただし、これを呼び出そうとすると、「外部コンポーネントが例外をスローしました」というメッセージが表示されます。例外。これはまったく説明的ではなく、非常に役に立たないものです。
エクスポートビューアでdllをプルアップすると、完全に定量化された宣言(IE public:void __cdecl CryptoPP :: X509PublicKey :: `vbase destructor'(void)__ptr64)を含む他のすべてのエクスポートされた関数が表示されます。呼び出し、関数名RSAEncryptStringを表示するだけです。
これは、c#側で無効な宣言を使用して関数を誤って呼び出す以外に、私が見ることができる唯一の問題です。System.Runtime.InteropServices.Marshalを間違って使用していますか?
<3を助けてくださいそして前もって感謝します。