美文网首页
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的正确姿势

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