C#中的指针声明

时间:2019-02-13 06:46:12

标签: c# pointers dll

这可能是一个愚蠢的初学者问题,但我不明白。我有一个声明函数的DLL

int get_state(const unsigned char n,unsigned int *state)

相关的C#导入语句是什么?是

public static extern int get_card(byte n,ref uint state);
[DllImport(@"my.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]

正确吗?

使用此函数时,如何我必须调用get_card()以便从state返回的参数中获取数据吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

好吧,DllImportAttribute必须放在它描述的方法之前

public static class MyClass {
   ...
   // Since you don't use String, StringBuilder etc. 
   // CharSet = CharSet.Ansi is redundant and can be omitted
  [DllImport(@"my.dll", CallingConvention = CallingConvention.Cdecl)]
   public static extern int get_card(byte n, ref uint state);
   ...
}

已声明了get_card方法,您可以像使用其他任何方法一样照常使用它(并且.Net将对参数进行 marshall ):

...
byte n = 123;
uint state = 456;

int result = MyClass.get_card(n, ref state);  
...