创作人QQ:851301776,邮箱:lfr890207@163.com,欢迎大家一起技术交流,本博客主要是自己学习的心得体会,只为每天进步一点点!

个人座右铭:
1.没有横空出世,只要厚积一定发。
2.你可以学历不高,你可以不上学,但你不能不学习

一、golang代码(以操作MySQL为例)

package main 

import "C"

import (

    "database/sql"

    "fmt"

    _ "github.com/go-sql-driver/mysql"

    "time"

    "log"

    _ "github.com/jmoiron/sqlx"

)

var MysqlDb *sql.DB

//export MySQL_conn

func MySQL_conn(dbDSN string)(int){

    //1.打开数据库

    MysqlDb, MysqlDbErr = sql.Open("mysql", dbDSN)//打开数据库失败

    if MysqlDbErr != nil {

        fmt.Print("open mysql failed!\n")

        var r = -1

        return r

    }

    fmt.Print("open mysql succeed!\n")

    MysqlDb.SetConnMaxLifetime(100*time.Second)

    var r = 0

    return r

}

func main(){

}

注意核心点:

        1.必须导入“C”包,import "C"

        2.必须在外部条用的函数加上://export 函数名(//export MySQL_conn)

        3.必须是main包,main函数什么都不做

二、编译

        1.安装go的标准库

             go install -buildmode=shared -linkshared std

        2.编译生成动态库,例如源文件名:hello.go

            go build -buildmode=c-shared -o  libhello.so  hello.go  

             注意:hello.go是源文件名称

                        libhello是自己所起的库名称

        3.查看文件夹会新增:libhello.h 和libhello.so

           libhello.h:供C程序调用的头文件

           libhello.so:生成的动态库

   三、libhello.sh讲解

        

         这是C的重命名

        

        这是函数的声明

 多参数函数的返回值定义