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/调用签名的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C# 创建自签名证书?

使用来自 C++ dll 的 __declspec(dllexport) 签名声明在 C# 中调用的问题

OpenSSL 和 C# 之间的不同 S/MIME 签名

C# 方法签名以及怎样的两个方法才算是不同的方法

从 C# 调用 oracle 函数

用java或C#调用命令行对android工程进行编译、打包和签名,急求!!