我在调用 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,并在此先感谢。