Dll:
#ifdef PIXDYN2630_EXPORTS
#define PIXDYN2630_API __declspec(dllexport)
#else
#define PIXDYN2630_API __declspec(dllimport)
#endif
#include "pixdyn.h"
// 此类是从 PixDyn2630.dll 导出的
class PIXDYN2630_API CPixDyn2630 {
public:
CPixDyn2630(void);
}extern "C"{
PIXDYN2630_API bool RegisterOutputMsgCallback(outputCallback_t outputCallbackProc); //outputCallback_t 是函数指针};
函数指针在pixdyn.h定义如下:
typedef void (*outputCallback_t)( const char * string, void* customData );C#调用:
public delegate void MyDelegate(String info, IntPtr customData); [DllImport("W:\\PixDyn2630\\debug\\PixDyn2630.dll", EntryPoint = "RegisterOutputMsgCallback", CallingConvention = CallingConvention.StdCall)]public static extern bool RegisterOutputMsgCallback(MyDelegate del);MyDelegate del = new MyDelegate(callback);RegisterOutputMsgCallback(del); //错误出在这里托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。
public void callback(String temp, IntPtr customData)
{
MessageBox.Show("Call");
}希望各位帮忙看看
#ifdef PIXDYN2630_EXPORTS
#define PIXDYN2630_API __declspec(dllexport)
#else
#define PIXDYN2630_API __declspec(dllimport)
#endif
#include "pixdyn.h"
// 此类是从 PixDyn2630.dll 导出的
class PIXDYN2630_API CPixDyn2630 {
public:
CPixDyn2630(void);
}extern "C"{
PIXDYN2630_API bool RegisterOutputMsgCallback(outputCallback_t outputCallbackProc); //outputCallback_t 是函数指针};
函数指针在pixdyn.h定义如下:
typedef void (*outputCallback_t)( const char * string, void* customData );C#调用:
public delegate void MyDelegate(String info, IntPtr customData); [DllImport("W:\\PixDyn2630\\debug\\PixDyn2630.dll", EntryPoint = "RegisterOutputMsgCallback", CallingConvention = CallingConvention.StdCall)]public static extern bool RegisterOutputMsgCallback(MyDelegate del);MyDelegate del = new MyDelegate(callback);RegisterOutputMsgCallback(del); //错误出在这里托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。
public void callback(String temp, IntPtr customData)
{
MessageBox.Show("Call");
}希望各位帮忙看看
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货