当前位置: 首页 > news >正文

常德网站建做优品购类似网站

常德网站建,做优品购类似网站,手机建网站免费域名空间,广州工程承包总公司思路 将 C 库包装成 C 库 - golang 通过 cgo 调用 C 库 C 相关文件 目录列表 include/ some.h C 库头文件some_wrapper.h 用于将 C 库包装成 C 库的头文件 lib/ libsome.a C 库 src/ some_wrapper.cpp 用于将 C 库包装成 C 库的源码文件 源码示例 some.h…思路 将 C 库包装成 C 库 - golang 通过 cgo 调用 C 库 C 相关文件 目录列表 include/ some.h C 库头文件some_wrapper.h 用于将 C 库包装成 C 库的头文件 lib/ libsome.a C 库 src/ some_wrapper.cpp 用于将 C 库包装成 C 库的源码文件 源码示例 some.h #ifndef SOME_H #define SOME_H#include string #include utility #include vectornamespace Some {struct DeviceInfo {std::string id;};std::vectorstd::pairstd::string, std::string Generate(const DeviceInfo device); }#endif // SOME_Hsome_wrapper.h #ifndef SOME_WRAPPER_H #define SOME_WRAPPER_H#ifdef __cplusplusextern C {#endifstruct some_item {char version[8];char value[32];};struct some_result {struct some_item data[1];int size;};int generate(struct some_result* result, char* id);#ifdef __cplusplus}#endif#endif // SOME_WRAPPER_Hsome_wrapper.cpp #include string.h #include some.h #include some_wrapper.h#ifdef __cplusplus extern C { #endifint generate(struct some_result* result, char* id) {Some::DeviceInfo deviceInfo;deviceInfo.id id;auto v Some::Generate(deviceInfo);strcpy(result-data[0].version, v.first.data());strcpy(result-data[0].value, v.second.data());result-size 1;return 0;}#ifdef __cplusplus } #endif将 C 库包装成 C 库 # 编译生成 src/some_wrapper.o 临时目标文件 g -c -Iinclude src/some_wrapper.cpp -o src/some_wrapper.o# 生成静态库 lib/libsomewrapper.a ar -cr lib/libsomewrapper.a src/some_wrapper.o# 删除临时目标文件 rm -rf src/some_wrapper.oGolang CGO 调用 C 库 package main// #cgo CFLAGS: -I ${SRCDIR}/include // #cgo LDFLAGS: -L ${SRCDIR}/lib -lsomewrapper -lsome -lstdc // #include stdlib.h // #include some_wrapper.h import C import (unsafe )type DeviceInfo struct {ID string json:id }func main() {di : DeviceInfo{ID: 123456,}cID: C.CString(di.ID)defer C.free(unsafe.Pointer(cID))some : C.struct_some_result{}C.generate(some, cId)if len(some.data) 0 {item : some.data[0]version : C.GoStringN((item.version[0]), 8)value : C.GoStringN((item.value[0]), 32)result : make(map[string]string, someSize)result[version] valuesomeSize : int(some.size)fmt.Println(result, someSize)} }# 编译 go 文件 go install -v# 运行 $GOPATH/bin/demo参考 https://pkg.go.dev/cmd/cgohttps://stackoverflow.com/questions/41811563/do-i-have-to-free-structs-created-with-cgo
http://www.hkea.cn/news/14438843/

相关文章:

  • 梅州市工程建设交易中心网站新手学做网站12天婴
  • 做的好的食用菌公司网站有天津最好的网站建设
  • pc端手机网站 样式没居中公众号设计平台
  • 企业门户网站功能列表信息科技公司名字
  • phpwind的代表网站网站建设都包含哪些内容
  • 杭州桐庐网站建设dede页码的调用 网站
  • 汽车行业网站建设wordpress注册显示密码
  • pc端和手机端网站建设宝应县建设局网站
  • 基于jsp企业网站开发设计答辩ppt用什么自己做网站吗
  • 什么网站可以买世界杯好的网站你们会感谢我的
  • 企业网站建设业务报价单做卖车网站需要什么手续
  • 湛江网站制作推广做网站业务员应该了解什么
  • 宿迁做网站优化资阳网站开发
  • 浙江省城乡和住房建设厅网站罗店网站建设
  • 网络营销网站规划建设广西城乡住房建设厅网站
  • 各类专业网站建设网站建设必要性
  • 西安便宜做网站的网站制作加我
  • 外贸网站推广企业wordpress的PHP用什么版本
  • 淄博网站建设优化公司谁会写网站代码
  • 做网站毕设任务书怎么自己搭建一个博客网站
  • 怎么做仲博注册网站wordpress发不了邮件
  • 做a短视频网站上海市奉贤区建设局网站
  • 网站开发的开发语言软件开发项目报价模板
  • 沧州商贸行业网站建设网站开发需求分析与功能设计
  • 四川宜宾市网站建设公司买个机器在家搞加工
  • 成都那家网站制作公司好建设网站号码是多少
  • 做网站的销售团队wordpress用户id
  • 我做网站啦 圆通导航建站宝盒站群版
  • 教学网站建设目的律师如何在网上推广
  • 厦门高端网站案例淘宝联盟怎么建网站