代码是:
[DLLImport("Generator.dll",EntryPoint="ResetMachine")]
[return:MarshalAs(UnmanagedType.I1)]
public static extern bool ResetMachine();使用的时候直接用一个 if 判断,if里面判断以后执行的程序,不对ResetMachine()进行操作,只是些C#的认证之类的
if(ResetMachine())
{
//true执行的程序
}else
{
//false执行的程序
}他写的是回调函数,在返回以前用弹出框返回了值,是true,但是到我这边调用判断的时候就成false了求高手帮忙解决下、、、 、、、
[DLLImport("Generator.dll",EntryPoint="ResetMachine")]
[return:MarshalAs(UnmanagedType.I1)]
public static extern bool ResetMachine();使用的时候直接用一个 if 判断,if里面判断以后执行的程序,不对ResetMachine()进行操作,只是些C#的认证之类的
if(ResetMachine())
{
//true执行的程序
}else
{
//false执行的程序
}他写的是回调函数,在返回以前用弹出框返回了值,是true,但是到我这边调用判断的时候就成false了求高手帮忙解决下、、、 、、、
你让他不要在返回前用弹出框,而是在最后直接返回true。这样可以排除他dll 的问题。
2、第二种可能是C++dll里用的不是false和true,可能是0或非0来表示真假;
3、看你上面贴出的代码,如果在调用ResetMachine函数前没有其他操作应该是没问题的(可以尝试将“[return:MarshalAs(UnmanagedType.I1)]”去除试试)。
2.我可以确定是false和true,源码我看过一些;
3.我上面贴的代码用的就是[return:MarshalAs(UnmanagedType.I1)]
还有没有一些其他的方法来测啊,我刚入软件行业不深,还请多多指教下、、、 、、、
非常感谢
那你这个C#函数声明依据是什么啊?
总有个dll,对吧,用VC的DEPENDS.EXE工具打开,看看这个函数的原型!贴出来,,,
而是0和1
试试看吧
[return:MarshalAs(UnmanagedType.Bool)]//4 字节布尔值(true != 0、false = 0)。这是 Win32 BOOL 类型。
public static extern bool ResetMachine();