所以在我的 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 函数“下载 FTP 存档!Download_FTP_Archive.Program::GetUserPass”使堆栈失衡。这可能是因为托管 PInvoke 签名与非托管目标签名不匹配。检查 PInvoke 签名的调用约定和参数是否与目标非托管签名匹配。
我应该在 C++ dll 文件中尝试类似:
using std::string;
DLL void GetUserPass(string &userName, string &passWord)
{
userName = "ceva";
passWord = "altceva";
}