我的问题是,我有一些DLL中的函数其中的一些功能,例如:C++中的字符串?
#include <string>
using namespace std;
extern "C" __declspec(dllexport) string __cdecl encryption(string s)
{
return s;
}
每当我试图调用从C#这个功能,这里使用的代码IM:
[DllImport("Packer.dll", EntryPoint = "encryption")]
static extern string encryption(string s);
我收到一个错误: 对PInvoke函数'Packer'的调用使堆栈不平衡。这很可能是因为托管的PInvoke签名与非托管目标签名不匹配。检查PInvoke签名的调用约定和参数是否与目标非托管签名相匹配。
即时猜测,因为我没有对功能 权声明任何人都可以指导我如何解决这个问题,在此先感谢我得到这个错误
这就是为什么DLL文件应该有Ç的API,而不是C++的API。每个人都可以同意“const char *”的二进制接口是什么。 –
您还需要在C#代码上设置调用声明或更改C++调用约定。 –
@Adam,几乎没有,扔在Unicode和所有地狱打破了松散:) – Blindy