在C++中我有些需要一个const char *
代码中传入:我应该如何为这段代码指定P/invoke接口?
void Load(const char *filename)
如果我尝试使用String
作为MSDN似乎表明:
[DllImport("foo.dll")]
protected static extern void Load(String filename);
我最终得到一个异常,说明由于被管理的P/Invoke调用和实际的C++函数签名之间不匹配,调用会有不平衡的堆栈。
什么是我需要使用的适当的C#函数签名?我试过Google的搜索结果,但我没有提出任何问题。
解决办法:事实证明,为什么我得到了一个“不平衡的堆栈”错误的原因是因为测试代码我跑呼吁未实际存在于目录中的文件。使用CallingConvention=cdecl
,并将文件放在适当的位置,问题就解决了。
看看下面这个问题:http://stackoverflow.com/questions/7666144/making- c-dll-for-c –