go向dll中传递回调函数,怎么才能正确传递函数地址

编程小学徒 2021-12-24 09:30:49

查阅了两种写法,无一例外程序全部奔溃了

第一种:

type CallBackFun func()
func (p *CTPDll) SetCallBackFun(fn CallBackFun) {
	function := p.Dll.NewProc("SetCallBackFun")
        function.Call(uintptr(unsafe.Pointer(&fn)))
}

 

 

 

第二种:

type CallBackFun func()
func (p *CTPDll) SetCallBackFun(fn CallBackFun) {
	function := p.Dll.NewProc("SetCallBackFun")
	var ptr uintptr = reflect.ValueOf(fn).Pointer()
	function.Call(ptr)
}

 

 

...全文
417 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
编程小学徒 2021-12-30
  • 打赏
  • 举报
回复

找到了syscall.NewCallback就行了

m0_37684144 2021-12-24
  • 打赏
  • 举报
回复

winapi 这个库不少,里面就有dll传递参数,dll 要申请内存,初始化,

2,348

社区成员

发帖
与我相关
我的任务
社区描述
go语言学习与交流版
社区管理员
  • go语言社区
  • 俺叫西西弗斯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧