c的dll定义:
int _stdcall ReSet(int* Status,int WaitTime);
其中Status为返回一个状态。
-----------------------------------------------
查了资料,有二种方式:
1.int* ->out int
2.int*-> ref int
----------------
在c#里两种方式都试过,但都提示找不到reset入口。另外在vb中是这样定义的:
Public Declare Function ReSet Lib "PCBDll.dll" (ByRef Status As Long, ByVal WaitTime As Long) As Long,并且运行正常。那C#中有什么特别的情况吗?请大家帮助。
int _stdcall ReSet(int* Status,int WaitTime);
其中Status为返回一个状态。
-----------------------------------------------
查了资料,有二种方式:
1.int* ->out int
2.int*-> ref int
----------------
在c#里两种方式都试过,但都提示找不到reset入口。另外在vb中是这样定义的:
Public Declare Function ReSet Lib "PCBDll.dll" (ByRef Status As Long, ByVal WaitTime As Long) As Long,并且运行正常。那C#中有什么特别的情况吗?请大家帮助。
public static extern string getStr();
或:在 Visual Studio 开发环境中设置 unsafe 编译器选项1. 打开项目的“属性”页。
2. 单击“生成”属性页。
3. 选中“允许不安全代码”复选框。
unsafe public static extern int ReSet(int* Status, int WaitTime); unsafe void Foo()
{
int status;
ReSet(&status, 60);
}
C#里我比较不喜欢用unsafe的东西。
int extern _stdcall ReSet(int* Status,int WaitTime); 在C#中,声明要如下,使用ref int
[DllImport("PCBDll.dll")]
public static extern int ReSet(ref int Status, int WaitTime);
在调用时也要用上ref关键字
ReSet(ref sts, wt);
unsafe void Foo()
{
int status;
ReSet(&status, 60);//到这句的时候依然提示。
}
郁闷!
DllImport("PCBDll.dll")]
unsafe public static extern int ReSet(int* Status, int WaitTime);
然后还修改的unsafe的编译。还是不行啊
ReSet-->我写成Reset了。
唉,结帐了,谢谢各位啊。