这可能是一个愚蠢的初学者问题,但我不明白。我有一个声明函数的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
返回的参数中获取数据吗?
谢谢!
答案 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);
...