日期:2014-05-20  浏览次数:20938 次

菜鸟求救C#调用DLL 回调函数不执行
回调函数原型
typedef void (WINAPI *HHCALLBACK)(int CmdType, ERRTYPE errType, int nDevId,int nChannelID, void *pContext);

ERRTYPE  是个枚举类型

要调用的dll中的函数
HHAPI_DLL int __stdcall Initialize( char* pConfigFileName, HHCALLBACK pCallback );


我声明的委托
 public delegate void HHCALLBACK(int CmdType, ERRTYPE errType, intnDevId, int nChannelID, IntPtr pContext);

DLl的引用
    [DllImport("HHSDK.dll", CharSet = CharSet.Ansi, SetLastError = true)]
    public static extern int HHInitialize(StringBuilder pConfigFileName, JSCALLBACK pCallback);

回调函数体
 public static void call(int CmdType, ERRTYPE errType, int nDevId, int nChannelID, IntPtr pContext)
        {
            
             。。。。。。。。。。。

        }

问题:::

在程序中执行 这个HHInitialize有返回值1

可是这个回调函数无法执行。

请问是什么原因。小弟感激涕零。。。。。。。。。救命啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!



------最佳解决方案--------------------
明天再来看 有没解答
------其他解决方案--------------------
哎 CSDN 的人了? 
------其他解决方案--------------------
该回复于2011-09-17 02:35:11被版主删除
------其他解决方案--------------------
这样调用不成功,80%是那个回调函数的问题,翻翻关于API标准,应该会找到答案
------其他解决方案--------------------
我就说说我的经验,我出现的不回调都是dll引用那块的回调函数多了ref或者少了ref的修饰,你看看你的sdk说明文档是不是也有这错误
------其他解决方案--------------------
HHCALLBACK callback=new HHCALLBACK(call);
HHInitialize("pConfigFileName", callback);