所以在我的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";
}