A. Go调用C

1、Go调用C:在go文件里调C(以下代码中除了开头的注释之外,其他注释不可删除)

/*
* go 和 C 互调用程序
*/ package main /*
int Add( int a, int b ) {
return a + b;
}
*/
import "C"
import (
"fmt"
) func main() {
fmt.Println(C.Add(1, 2))
}

上面的C代码虽然被“注释”了,但是Go可以直接调

2、Go调用C:通过.h头文件调(以下代码中除了开头的注释之外,其他注释不可删除)

/*
* go 和 C 互调用程序
*/ package main /*
#include "MyHeadFile.h"
*/
import "C"
import (
"fmt"
) func main() {
fmt.Println(C.MyFunc("Hello"))
}

上面代码以注释的方式导入MyHeadFile.h头文件,然后可以直接使用其中的函数

3、Go生成动态库dll(以下代码中除了开头的注释之外,其他注释不可删除)

/*
* Go生成动态库的命令(Windows平台需安装mingw-w64):
* go build -o hello.dll -buildmode=c-shared hello.go
* go build -o hello.so -buildmode=c-shared hello.go
*/
package main import "C"
import (
"fmt"
) //export HelloGolang
func HelloGolang() {
fmt.Println("HelloGolang")
} func main() {
fmt.Println("main")
}

4、示例:Go调C并返回

package main

/*
#include <stdio.h>
#include <stdlib.h>
#include <string.h> #define LEN 1024 char* Foo( char *input ) {
char* res = malloc( LEN * sizeof( char ) );
sprintf( res, "%s %s", input, "World!" );
return res;
}*/
import "C"
import (
"fmt"
"unsafe"
) func getID() string {
cs := C.CString( "Hello" )
res := C.Foo( cs )
str := C.GoString( res )
C.free( unsafe.Pointer( cs ) )
C.free( unsafe.Pointer( res) )
return str
} func main() {
fmt.Println( getID() )
}

B. Go调用C++

未完待续...

Go与C/C++ 互相调用的更多相关文章

  1. 黑马毕向东Java基础知识总结

    Java基础知识总结(超级经典) 转自:百度文库 黑马毕向东JAVA基础总结笔记    侵删! 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部 ...

  2. 《果壳中的C# C# 5.0 权威指南》 - 学习笔记

    <果壳中的C# C# 5.0 权威指南> ========== ========== ==========[作者] (美) Joseph Albahari (美) Ben Albahari ...

  3. JS调用Android、Ios原生控件

    在上一篇博客中已经和大家聊了,关于JS与Android.Ios原生控件之间相互通信的详细代码实现,今天我们一起聊一下JS调用Android.Ios通信的相同点和不同点,以便帮助我们在进行混合式开发时, ...

  4. 【原创分享·支付宝支付】HBuilder打包APP调用支付宝客户端支付

    前言 最近有点空余时间,所以,就研究了一下APP支付.前面很早就搞完APP的微信支付了,但是由于时间上和应用上的情况,支付宝一直没空去研究.然后等我空了的时候,发现支付宝居然升级了支付逻辑,虽然目前还 ...

  5. 操作系统篇-调用门与特权级(CPL、DPL和RPL)

    || 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.前言 在前两篇文章(<操作系统篇-浅谈实模式与保护模式>和<操作系统篇-分段机制与GDT|LDT>)中,我们提到 ...

  6. 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)

    一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...

  7. django server之间通过remote user 相互调用

    首先,场景是这样的:存在两个django web应用,并且两个应用存在一定的联系.某些情况下彼此需要获取对方的数据. 但是我们的应用肯经都会有对应的鉴权机制.不会让人家随随便便就访问的对吧.好比上车要 ...

  8. 调用AJAX做登陆和注册

    先建立一个页面来检测一下我们建立的用户名能不能用,看一下有没有已经存在的用户名吗 可以通过ajax提示一下 $("#uid").blur(function(){ //取用户名 va ...

  9. nodejs进阶(2)—函数模块调用

    函数调用 1. 文件内普通函数调用 创建一个js文件命名为2_callFunction.js,其中定义一个函数fun1,向返回对象输出了一段字符串“你好,我是fun1”. //------------ ...

  10. 【初学python】使用python调用monkey测试

    目前公司主要开发安卓平台的APP,平时测试经常需要使用monkey测试,所以尝试了下用python调用monkey,代码如下: import os apk = {'j': 'com.***.test1 ...

随机推荐

  1. vue3用vite新建项目

    1. npm init vue@latest vue3-project 调用create-app创建, 指定了目录是vue3-projece,但是,紧接着有一堆配置要询问. 2. npm create ...

  2. 万字解析Golang的map实现原理

    0.引言 相信大家对Map这个数据结构都不陌生,像C++的map.Java的HashMap.各个语言的底层实现各有不同,在本篇博客中,我将分享个人对Go的map实现的理解,以及深入源码进行分析,相信耐 ...

  3. linux中如何判断一个rpm是手动安装还是通过yum安装的

    现状 对于一个不熟悉的服务器或者是虽然是自己的服务器,但历史比较久远,对于上面安装了的一些软件包,我们记忆都慢慢模糊了. 我今天遇到一个情况,在安装一个工具x2openEuler时,安装失败,提示依赖 ...

  4. Kubernetes:根据进程 Pid 获取 Pod 名称

    前言 在管理 Kubernetes 集群的过程中,我们经常会遇到这样一种情况:在某台节点上发现某个进程资源占用量很高,却又不知道是哪个容器里的进程.有没有办法可以根据进程 PID 快速找到 Pod 名 ...

  5. bug|项目经验|记录某次页面div使用v-html标签渲染图片等内容的过程

    前言 记录某次页面div使用v-html标签渲染图片等内容的过程 一.结论: get请求但被设置Sec-Fetch-*请求头的图片无法展示. 二.原因: 1.本项目中的img标签发起get请求,目标链 ...

  6. Pydantic根校验器:构建跨字段验证系统

    title: Pydantic根校验器:构建跨字段验证系统 date: 2025/3/24 updated: 2025/3/24 author: cmdragon excerpt: Pydantic根 ...

  7. verilog实现十进制正数与ASCII码互转

    verilog实现十进制正数与ASCII码互转 1.小位宽数实现转ASCII码 1.小整数十进制转BCD码(8421码) 十进制数 0 1 2 3 4 5 6 7 8 9 8421码 0000 000 ...

  8. 【数据库】Java实体类的属性类型与数据库表字段类型对应表

    JDBC类型与Java类型 JDBC类型 Java Object类型 CHAR java.lang.String VARCHAR java.lang.String LONGVARCHAR java.l ...

  9. 超简单电脑本地部署deepseek,另附”一键使用脚本“撰写与联网使用方法

    在电脑上部署deepseek,总共分三步 1.打开ollama官网点击Download按钮 2.在ollama官网搜索deepseek-r1模型,选择对应规模,并复制ollama命令,比如这里,我的o ...

  10. study Rust-2【环境与配置,随机数】

    Rust教程资料很多.但是,这是教程学习资料感觉挺好!推荐给你https://doc.rust-lang.org/stable/book/ (简体中文译本)在线阅读 学习rust开始有点感觉了.美好的 ...