.a文件是编译过程中生成的,每个package都会生成对应的.a文件,Go在编译的时候先判断package的源码是否有改动,如果没有的话,就不再重新编译.a文件,这样可以加快速度。

生成.a文件(.h文件也会自动生成)

创建文件pkgqrcode.go

package mainimport "C"import (    //"fmt"    "github.com/tuotoo/qrcode"    "os")//export GetQrcodeStringfunc GetQrcodeString(cstring *C.char) *C.char {    //func GetQrcodeString() *C.char {    path := C.GoString(cstring)    //path := "qrcode.png"    fi, err := os.Open(path)    if err != nil {        //fmt.Println(err.Error())        return C.CString(path)    }    defer fi.Close()    qrmatrix, err := qrcode.Decode(fi)    if err != nil {        //fmt.Println(err.Error())        return C.CString(path)    }    //fmt.Println(qrmatrix.Content)    //return C.Cstring(qrmatrix.Content)    gostr := qrmatrix.Content    cstr := C.CString(gostr)    return cstr}func main() {}

import "C" 的作用就是go代码中使用C函数

需要加//export GetQrcodeString 才会生成.h文件(不知道什么!!)

C.GoString(cstring) 把C字符串转成go字符串

C.CString(gostr) 把go字符串转成C字符串

编译步骤

生成.a文件命令(进入pkgqrcode.go代码目录)执行:

go build -buildmode=c-archive -o pkgqrcode.a pkgqrcode.go

生成结果

pkgqrcode.a
pkgqrcode.h

更多golang知识请关注golang教程栏目。

更多相关文章

  1. golang判断js文件是否存在
  2. golang判断文件是否存在的方法
  3. golang判断字符串是否为空的方法
  4. golang判断字符串是否数字的方法
  5. golang检查文件是否存在的方法
  6. golang 如何判断文件是否存在
  7. golang中如何比较字符串是否相等
  8. golang 怎么拼接字符串
  9. golang 如何读取csv文件

随机推荐

  1. android 反射的使用场景
  2. 选择框在右边的单选按钮。。
  3. Android游戏引擎《Rokon》添加Rokon框架
  4. Android 简单视频播放器(破烂版,后续更新)
  5. Android完整的Activity页面
  6. android Gradle打包修改生成的apk文件名
  7. Could not find com.android.tools.build
  8. Android read system font
  9. [转]使HOME键有效
  10. android 电容屏(二):驱动调试之基本概念篇