C# :- P/调用签名
Posted
技术标签:
【中文标题】C# :- P/调用签名【英文标题】:C# :- P/invoke signature 【发布时间】:2010-03-11 09:01:48 【问题描述】:我在 C++ 中有一个带有以下签名的 dll。它在 c++ 中工作;
void Decompress(unsigned char *in,int in_len,unsigned char * out,
unsigned *o_len,int *e);
参数说明
-
*in : 传递给的字节数组
功能。
in_len :第一个参数中的字节长度。
*out :这将是字节数组的输出。
*o_len : 第三个参数中的字节数
*e : 返回错误代码
如何从 c# 调用它?
什么是 P/Invoke 声明?
【问题讨论】:
另见blogs.msdn.com/b/joshwil/archive/2005/08/10/450200.aspx,看来32bit和64bit CLR可以做的不一样... 【参考方案1】:static extern void Decompress(
byte[] input,
int in_len,
byte[] output,
ref int o_len,
out int e);
【讨论】:
如何将 byte[]output 编组为正确的大小?对于编组器,这里似乎缺少一些东西。 你能告诉我如何调用属于类的静态函数吗? QWidget::grabKeyboard () 如果你引用的类是静态的,那么你可以像QWidget.grabKeyboard()一样直接调用它的类名。如果该类不是静态类,则必须在调用它之前创建该类的任何一个对象(使用相同的语法)。 附加:如果您需要从托管代码访问位于面向对象的 c++ 库中的许多类,最有效的方法(就工作量而言)通常是通过 C++/CLI,一个专门的语言。以上是关于C# :- P/调用签名的主要内容,如果未能解决你的问题,请参考以下文章