go调用dll中方法参数为*char类型

tiger1103 2017-12-25 10:58发布 1224浏览 问与答

我有一个dll库,里面有一个C实现的方法:

int  GetPeopleName(char *strTmp, int *strLen)

现要在go里面调用这个方法,参数应该如何设置?

func GetPeopleName(){GetPeopleName := lib.NewProc("GetPeopleName")var a bytevar b intret,_,err := GetPeopleName.Call(uintptr(unsafe.Pointer(&a)),uintptr(unsafe.Pointer(&b)))if err != nil {fmt.Printf("value a is %s\n",(*string)(unsafe.Pointer(uintptr(a))))fmt.Printf("value b is %d\n",(*int)(unsafe.Pointer(uintptr(b))))fmt.Printf("GetPeopleName_执行结果%v\n",ret)}
}

我的代码是这样,但是打印a字符串信息:
value a is %!s(*string=0xd4)
value b is 51639
如何获取a字符串内容?


xjjrocker 2018-01-17 15:17

把:

    var a byte...uintptr(unsafe.Pointer(&a))

改成:

    var a = make([]byte, 256)...uintptr(unsafe.Pointer(&a[0]))

go dll 传char*相关推荐

  1. C# 调用C++ dll 返回char*调用方式(StringBuilder乱码)

    // CDLLDemo.cpp : 定义 DLL 应用程序的导出函数. // #include "stdafx.h" #include "string.h" # ...

  2. c#调用c++ dll const char* String类型转换问题。传值,与接收返回值问题

    C++原型 extern "C" __declspec(dllexport) const char* GetUnicoide(const char* gb2312) {int le ...

  3. c# 调用c库dll ,char*转string的解决办法

    最近由于有个未知的设备需要用到modbus通讯协议,底层需要与PLC通讯,坤跌,PLC啥型号也不清楚封在里面不能拆,前人只留了几个不能运行的QT代码以及不完整的文档.用惯了C#想要重新学QT,真不知猴 ...

  4. python调用dll传指针参数

    原文:http://blog.csdn.net/xiuduyi/article/details/39609231 生成dll文件以及python对DLL中函数的调用(参数类型以及返回值) 工具:VS2 ...

  5. html调用exe传参,exe之间传递参数或dll 向exe传递

    qustion: 第一步,我用在html中用vbscript调用qq.dll把值传给dll(script中代码): set objNetSamp=CreateObject("qq.leimi ...

  6. SQL恢复XP_CMDSHLL 以及XPLOG70.DLL被删 直接用SQL连接器开启3389

    SQL恢复XP_CMDSHLL 以及XPLOG70.DLL被删 直接用SQL连接器开启3389 用SQL连接器恢复XP_CMDSHLLE的命令 (1)SQL Query Analyzer sp_add ...

  7. python如何调用dll库中的函数_Python调用dll库接口-ctypes方法

    背景 最近需要用python写个脚本程序(win10 环境),需要调用现成的dll库完成这项任务,对于一直在Linux平台上开发程序的本人来说,从没有过使用dll的经历(不得不说还是so大法好),遇到 ...

  8. Newtonsoft.Json.dll 本地调用正常,服务器调用不正常

    Newtonsoft.Json.dll 本地调用正常,服务器调用不正常的问题 请将System.Runtime.Serialization.dll 传到服务器项目bin文件夹中即可 转载于:https ...

  9. 在VS2010平台上创建并使用dll

    一.为什么需要dll 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架,如ATL.M ...

最新文章

  1. oracle10默认备份路径,oracle 10g RMAN备份及恢复
  2. 30分钟搞定ES6常用基础知识
  3. Ext JS 6学习文档-第3章-基础组件
  4. Java微信订单查询
  5. linux卸载db2cli,DB2 for linux 安装
  6. Hibernate的事件机制
  7. memcached mysql缓存_memcached做数据库缓存
  8. HttpClient和DefaultHttpClient
  9. NeurIPS 2021 | 视频压缩框架DCVC:从残差编码到条件编码,建模上下文
  10. [转载] java中抽象类的定义和使用
  11. 分布式计算、网格计算和云计算
  12. 关于MDI窗体的那些问题
  13. 手机要求安装NETCFv35.Messages.zh-CHS.cab,怎么办
  14. 应用计算机测pn结正向电压,PN结正向压降与温度关系的研究实验报告
  15. html炫酷动态时钟代码,js动态炫酷数字时钟
  16. 分享一个网页截图html代码
  17. Linux虚拟机不显示IP地址的三种解决方法
  18. 关于 QML Tumbler 自定义日历在响应onWheel事件后,其他原有mouse事件无法响应
  19. 什么是jsf_JSF的完整形式是什么?
  20. java socket一直得不到返回值

热门文章

  1. Linux搭建安卓开发环境
  2. 使用BPF跟踪Linux内核
  3. php trace 图形,php 方便水印和缩略图的图形类
  4. oracle同步复制清理,Oracle数据库同步——高级复制
  5. vc6.0 点击鼠标获取mysql数据库所在行_VC6.0连接到mysql数据库
  6. python线程只能启动一次_python多线程只能运行一个线程的问题
  7. 没想到租房也要会编程?
  8. 如何做到让屏幕中的人不翼而飞?这个JavaScript项目告诉你该怎么做!
  9. 一次线上JVM调优实践,FullGC40次/天到10天一次的优化过程
  10. 收藏|MySQL常用语法小结