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

男女做那个的网站是什么百度公司电话

男女做那个的网站是什么,百度公司电话,web网站模板免费,中企动力工作两个月感受思路 将 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 <vector>namespace Some {struct DeviceInfo {std::string id;};std::vector<std::pair<std::string, std::string>> Generate(const DeviceInfo& device);
}#endif  // SOME_H
some_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_H
some_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.o

Golang 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/cgo
  • https://stackoverflow.com/questions/41811563/do-i-have-to-free-structs-created-with-cgo
http://www.15wanjia.com/news/40748.html

相关文章:

  • 上海协策网站制作广州seo关键词
  • 什么网站 是cms系统下载有哪些推广平台和渠道
  • 个人网站需要哪些内容广点通推广登录入口
  • 网站开发大公司需要资格证吗北京seo顾问推推蛙
  • 东莞微信网站制作有哪些网络营销公司
  • 做网站花了三万块新手做电商怎么起步
  • 领导不愿意做招聘网站怎么办快速优化工具
  • 酒店网站开发合同范本青岛seo外包服务
  • 企业网站选wordpress和织梦seo外包资讯
  • 响应式网站模板是什么原因怎么开网站平台挣钱
  • wordpress仿制模块seo智能优化公司
  • 字体大全seo关键词优化培训
  • 大型网站的例子外贸网站制作推广
  • 网站代码如何做优化谷歌外链工具
  • 做毕业设计网站的问题与展望如何进行品牌宣传与推广
  • 中国人民解放军建军多少周年seo排名软件
  • 建筑公司网站源码下载seo优化网站网页教学
  • 怎样设计静态网站页面网页制作免费网站制作
  • 医疗网站如何做优化网站收录提交入口大全
  • 东营 微信网站建设推荐seo关键词优化
  • 政务服务网站建设文档长尾关键词挖掘熊猫
  • wordpress崩溃廊坊seo外包公司费用
  • 石碣企业网站建设公司怎么进行网站推广
  • 响应式网站建设 苏州国内专业的seo机构
  • 中山哪家建网站好有创意的营销策划案例
  • 福建疫情51趣优化网络seo工程师教程
  • 做抢单软件的网站seo排名技术教程
  • 本地推广找哪些网站南京百度推广优化
  • 有域名有空间怎么做网站网站服务器
  • 响应式网站一般做多大怎么做好网络营销