extern"C" __declspec(dllexport) BOOL OEMISO15693UID(void (*pUIDCallBack)(char*));
这个是DLL头文件的声明。
void (*pUIDCallBack)(char*)
这个是DLL中声明的回调函数。
我在C#中要调用这个函数,但是没有遇到过以回调函数作为参数的。看了网上的好多帖子,都说要用到delegate。
但是没看懂,希望高手指点。
这个是DLL头文件的声明。
void (*pUIDCallBack)(char*)
这个是DLL中声明的回调函数。
我在C#中要调用这个函数,但是没有遇到过以回调函数作为参数的。看了网上的好多帖子,都说要用到delegate。
但是没看懂,希望高手指点。
解决方案 »
- 抓取网页代码后的提取问题
- WPF的Combobox的ItemSource第二次绑定(更新)问题
- 如何获取两个同时长按的键进行处理?
- 代替复制的问题?急!!!!
- [求助]关于在C#中使用SetPiexl函数
- 判断Excel中图表类型时出错,请高手指点,在线等,急!!
- 关于static变量和函数同Windows服务之间关系的问题,很是迷惑
- DataList里基模板和交替模板各有一个LinkButton,为什么触发ItemCommand事件时只有一个LinkButton能被实例化
- vivienne请进,解决问题
- !!!请较C#数据库编程高手???
- 求解释x = new CultureInfo("fr-FR").CompareInfo.Compare(s1, s2);
- c# wince 手持机通过GPS发信息 如何去实现?
C++:
void TestCallBack2(FPTR2 pf2, char* value);C#:
public delegate bool FPtr2( String value ); [ DllImport( "..\\LIB\\PinvokeLib.dll" )]
public static extern void TestCallBack2( FPtr2 cb2, String value ); FPtr2 cb2 = new FPtr2( App.DoSomething2 );
TestCallBack2( cb2, "abc" );
int __stdcall MyFunction(PFN_ MYCALLBACK callback);
To call MyFunction from managed code, declare the delegate, attach DllImport to the function declaration, and optionally marshal any parameters or the return value:public delegate void MyCallback();
[DllImport("MYDLL.DLL")]
public static extern void MyFunction(MyCallback callback);
Also, make sure the lifetime of the delegate instance covers the lifetime of the unmanaged code; otherwise, the delegate will not be available after it is garbage-collected.来自:
Registering Callback Methods小节
http://msdn.microsoft.com/en-us/library/aa288468(v=vs.71).aspx#pinvoke_registeringcallback
我要利用这个回调函数获取char的值,可是你们提供的方法最后怎么回调函数的参数都没了。。
char*,我其实就像获取这个值,但是你像你的例子这样儿,FPTR2 pf2
就把这个回调函数实例化了啊,那里面的参数就取不到了啊。
public static bool DoSomething2( String value )
{
Console.WriteLine( "\nCallback called with param: {0}", value );
…
}