したがって、私のc ++。dllファイルでは、次の関数を取得しました。
DLL void GetUserPass(char* &userName, char* &passWord)
{
userName = "ceva";
passWord = "altceva";
}
これをc#から呼び出したいのですが、エラーが発生します。
[DllImport("myDLL.dll")]
private static extern void GetUserPass(ref string userName, ref string passWord);
static void f()
{
string userName ="";
string passWord ="";
GetUserPass(ref userName, ref passWord);
}
そして、エラーは次のとおりです。
PInvoke関数'DownloadFTP Archive!Download_FTP_Archive.Program :: GetUserPass'の呼び出しにより、スタックのバランスが崩れました。これは、マネージドPInvokeシグニチャがアンマネージドターゲットシグニチャと一致しないことが原因である可能性があります。PInvokeシグニチャの呼び出し規約とパラメータがターゲットのアンマネージドシグニチャと一致することを確認してください。
C++dllファイルで次のようなものを試してみる必要があります。
using std::string;
DLL void GetUserPass(string &userName, string &passWord)
{
userName = "ceva";
passWord = "altceva";
}