GO调用C语言之字符串传递

2023-05-16

 

C: hello.h


#include <stdlib.h>
#include <stdio.h>
#include <string.h>

char *abc();
int strnum(char *str);

C:  hello.c

char *abc()
{
    char a[]="teststring"
    int byte_len=(int)sizeof(a);
    char *b=(char*)malloc(byte_len*sizeof(char));
    sprintf(b,"%s",a)
    return b;
}
int strnum(char *str){
    int len=strlen(str);
    return len;
}

GO: main.go

package main

// #include <stdlib.h>
// #include "./hello.h"

import "C"
import (
    "fmt"
    "unsafe"
)


func main(){

    cs:=C.abc() //C返回字符串的b指针
    ss:=C.GoString(cs) //将指针转化为string
    defer C.free(unsafe.Pointer(cs)) //释放在C中申请的内存空间
    fmt.println(ss) //ss为获取到C返回的字符串

    cs2 := C.CString("sdfs")  // C.CString() to *C.char
    defer C.free(unsafe.Pointer(cs2)) //释放在C中申请的内存空间
    fmt.Println("num=", C.strnum(cs2))  //必须通过C.CString("sdfs")转换才能传递


}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GO调用C语言之字符串传递 的相关文章

  • 离线升级:openssh从8.1版本至8.4版本

    由于公司有内外网之分 xff0c 因此内网的升级需要将所需要的包从外网传到内网进行离线升级 如果大家也是这种情况 xff0c 建议升级的时候务必要先拿一台不常用服务器 xff08 测试环境的话如果不常用也可以在上面升级 xff09 试一下
  • debian 10 修改网卡名称为eth0

    1 编辑文件 etc default grub 修改下面的值 初始值 GRUB CMDLINE LINUX 61 34 34 修改后 GRUB CMDLINE LINUX 61 34 net ifnames 61 0 biosdevname
  • ubuntu 安装过程中 安装界面卡死完美解决办法 笔记本

    在安装ubuntu过程中 xff0c 由于是神舟电脑 xff0c 问的淘宝客服 xff0c 没想到比我还白 xff0c 在网上搜了资料 xff0c 总结如下 xff1a 1 设置优盘启动 这里就不多说了 xff0c 网上资料很多 xff0c
  • Codeforces科学刷题指南,一图一表便够了

    简要介绍如何科学地刷算法题 xff0c 来提高自己解决问题的能力 xff0c 并利用爬虫抓取Codeforces的题库 xff0c 来分析题目难度以及算法分类的关系 无论做什么事 xff0c 多尝试 找套路 然后刻意练习都是至关重要的 对信
  • linux安装busybox教程

    获取软件包 下载busybox安装包1 31 0当前最新稳定版本 xff0c 并解压 xff1a span class token function wget span https busybox net downloads busybox
  • 执行chmod -R 777 / 临时恢复ssh

    span class token function cd span etc span class token function chmod span 644 span class token function passwd span gro
  • XFS文件系统扩容

    XFS文件系统扩容 注意 xff1a 备份 xff01 备份 xff01 备份 xff01 操作前备份 xff01 查看磁盘挂载 分区信息 root 64 BJ CentOS7 span class token comment df hT
  • centos密码正确却出现登录闪退到输入用户名密码界面

    问题现象 xff1a 输入密码用返回登录界面 xff1b 定位 xff1a etc profile存在特殊环境变量 xff08 注释掉 xff09 root bash profile 正常 xff08 如果有特殊环境变量也注释 xff09
  • Windows中使用netsh命令进行端口转发

    在Linux中 xff0c 使用iptables可以非常轻松地配置端口重定向 在Windows Server系统上 xff0c 路由和远程访问服务 xff08 RRAS xff09 通过使用虚拟专用网络 VP N 或拨号连接支持远程用户或站
  • ubuntu启动,提示引导丢失

    报错如下 xff1a 解决方案 xff1a 这种情况大多是引导项或者系统受损了 xff0c 优先看文件是否有缺失 xff0c 确认文件完整后可进行以下操作 mkdir span class token operator span p spa
  • centos7重新安装polket

    问题现象 xff1a sshd服务重启报错 xff1a 报错内容包含 xff1a Authorization not available Check if polkit service is ruming or see debug mess
  • 执行ifup或者dhclient报错dhclient error while loading shared libraries libdns-export.so.1102解决方案。

    服务器没有网络 xff0c 其他方式登录服务器后发现网卡没有启动 xff1a eth0网卡处于down状态 执行dhclient或者ifup激活网卡出现dhclient error while loading shared librarie
  • btrfs基本介绍及应用

    一 btrfs基本概念 btrfs文件系统是2007年Oracle开发 xff0c 支持GPL协议 xff0c 为了取代Linux早期的ext系列文件系统 btrfs核心特性 xff1a 多物理卷支持 xff1a btrfs可由多个底层物理
  • windows 配置FTP教程

    由于windows版本不同在配置上有部分不一致 xff0c 我这边主要以windows server 2008以及Windows server 2012 做演示 1 Windows 2008 通过 IIS 配置 FTP 操作步骤 IIS的安
  • Windows实例通过IIS如何搭建多个FTP站点

    FTP搭建多个站点可以通过不同的端口号来进行实现 xff0c FTP标准命令端口号为21 xff0c 数据端口为20 第一个FTP站点默认的21端口即可 先进行添加第一个FTP站点 xff0c 选择本机外网IP xff0c 端口默认21 选
  • xubuntu-desktop找不到状态栏怎么办?

    1 右键找到设置中的panel选项 2 找到恢复默认选项 3 点击xfce选项 xff0c 然后点左下角的齿轮按钮 开心不
  • Proxmox ve(PVE) 显示CPU和硬盘温度、UPS信息

    1 安装CPU温度检测软件sensors apt install lm sensors y 传感器探测 xff0c 命令 xff1a sensors detect 全部选择yes即可 xff0c 可能其中一个地方提示 ENTER xff0c
  • Proxmox ve(PVE)开启硬件直通

    1 修改grub文件 vi etc default grub 找到GRUB CMDLINE LINUX DEFAULT 61 34 quiet 34 这行改为 GRUB CMDLINE LINUX DEFAULT 61 34 quiet i
  • HAL库函数IIC

    span class token comment 64 defgroup I2C XferOptions definition I2C XferOptions definition 64 span span class token macr
  • 语音处理:Python实现wav与pcm文件格式转换

    语音处理 xff1a Python实现wav与pcm格式转换 知识点wav转pcmpcm转wav参考资料 知识点 wave包的读写及参数设置文件路径操作拼接音频相关参数了解 wav文件存储的参数信息有 xff1a 通道数 采样率 位深 xf

随机推荐