美文网首页
golang中调用c的正确姿势

golang中调用c的正确姿势

作者: AI_Finance | 来源:发表于2020-04-28 14:47 被阅读0次
Screen Shot 2020-04-28 at 2.45.23 PM.png

工程结构如上图所示,我们需要实现的目标是在go文件中调用c文件

foo.c如下:

#include <stdio.h>
#include "foo.h"

int count = 6;
void foo() {
    printf("I am foo!\n");
}

foo.go如下

package main

/*
#cgo LDFLAGS: -L./ -lfoo
#include <stdio.h>
#include <stdlib.h>
#include "foo.h"
*/
import "C"

func main() {
    C.foo()
}

foo.h如下:

//foo.h
void foo();

编译过程如下:
1、先将c文件编译为.o文件,然后生成动态链接库.dylib文件
(1) clang -c foo.c
(2 clang -shared foo.o -o libfoo.dylib
2、在上述的动态链接库生成之后,在foo.go中添加动态链接命令:#cgo LDFLAGS: -L./ -lfoo

需要注意的是

/*
C code
*/
import "C"

中间不能有空格

相关文章

  • golang中调用c的正确姿势

    工程结构如上图所示,我们需要实现的目标是在go文件中调用c文件 foo.c如下: foo.go如下 foo.h如下...

  • cgo

    golang与C有着千丝万缕的联系,go代码中可以调用C代码由于项目需要,新使用的golang语言需要调用C语言写...

  • golang调用c动态库

    golang调用c动态库 简介 golang调用c语言动态库,动态方式调用,可指定动态库路径,无需系统目录下 核心...

  • Go调用C/C++

    cgo golang是类C的语言 支持调用C接口(不支持调用C++)Go调用C/C++的方式 : C : 直接调用...

  • Golang对MySQL的封装

    Golang操作MySQL的正确姿势https://www.jianshu.com/p/3ec3df7103cf

  • golng 中的 cgo

    今天体验了一下 golang 的 cgo 部分,发现 golang 确实太强,调用 c 语言部分直接像是原生操作,...

  • Golang调用C代码

    一、直接写在GO文件中 构建方式 go buildgo build main.go 注: 这种方式只适合代码量特别...

  • Go调用C引发的极简主义思考

    让事情保持在超级简单的状态 在很多场景下,Golang(够浪)的程序中需要调用c函数或者是用c编写的库(底层驱动,...

  • BClassStrongLayout.mm 报错 替换 脚本

    Podfile 中调用姿势

  • 获取View宽高的正确姿势

    获取View的宽高正确姿势 在我们的正常开发中,我们避免不了 调用View.getWidth, View.getH...

网友评论

      本文标题:golang中调用c的正确姿势

      本文链接:https://www.haomeiwen.com/subject/pzivwhtx.html