runtime error: invalid memory address or nil pointer dereference

举报
风吹稻花香 发表于 2021/06/04 23:23:23 2021/06/04
【摘要】   runtime error: invalid memory address or nil pointer dereference   解决方法: tcallback((unsigned char*)packet->data,packet->size); 但是只能收到第一个数据。 问题代码: c++: tcallback((u...

 

runtime error: invalid memory address or nil pointer dereference

 

解决方法:

tcallback((unsigned char*)packet->data,packet->size);

但是只能收到第一个数据。

问题代码:

c++:

tcallback((unsigned char*)packet->data[0],packet->size);

go:


  
  1. package main
  2. import (
  3. "syscall"
  4. "unsafe"
  5. "fmt"
  6. )
  7. import "C"
  8. type Callback func(data []byte, size int,dtype int,width int,height int) int
  9. func get_byte(data []byte, size int,dtype int,width int,height int) int{
  10. fmt.Println(size,width)
  11. return 0
  12. }
  13. func callDll() {
  14. dll := syscall.MustLoadDLL("hik_client.dll")
  15. callback := syscall.NewCallback(func(r uintptr, size int) (ret int) {
  16. p := (*byte)(unsafe.Pointer(r))
  17. // 定义一个[]byte切片,用来存储C返回的字符串
  18. data := make([]byte, 0)
  19. // 遍历C返回的char指针,直到 '\0' 为止
  20. for *p != 0 {
  21. data = append(data, *p) // 将得到的byte追加到末尾
  22. r += unsafe.Sizeof(byte(0)) // 移动指针wwwwwwwwwwwwwwwwwwwwwwwwwwwww,指向下一个char
  23. p = (*byte)(unsafe.Pointer(r)) // 获取指针的值,此时指针已经指向下一个char
  24. }
  25. fmt.Printf("from callback1: %d %b\n", size, cap(data))
  26. return 0
  27. })
  28. var filename string
  29. filename = "rtsp://admin:sbdwl123@192.168.25.45:554/h264/ch1/main/av_stream"
  30. procGreet := dll.MustFindProc("byte_url")
  31. procGreet.Call(uintptr(unsafe.Pointer(syscall.StringBytePtr(filename))), callback)

 

文章来源: blog.csdn.net,作者:网奇,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/jacke121/article/details/88393870

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。