加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Golang:Golang生成动态库及调用

发布时间:2020-12-16 19:18:04 所属栏目:大数据 来源:网络整理
导读:简介 目前go动态库的生产只支持Linux,Windows下会报这样的错误,`-buildmode=plugin not supported on windows/amd64` CODE plugin.so package main import ( "fmt" ) func DC all () { fmt .P rintln ( "plugin.so was called" ) } func DC allWithParam (

简介

目前go动态库的生产只支持Linux,Windows下会报这样的错误,`-buildmode=plugin not supported on windows/amd64`

CODE

plugin.so

package main



import ( "fmt" ) func DCall(){ fmt.Println("plugin.so was called") } func DCallWithParam(msg string){ fmt.Println("参数内容为:",msg) } func main() { fmt.Println("goroute全部退出") }

pluginload.go

package main

import (
    "plugin"
)

func main() {

    //加载动态库
    p,err := plugin.Open("plugin.so")
    if err != nil {
        panic(err)
    }
    //查找函数 
    f,err := p.Lookup("DCall")
    if err != nil {
        panic(err)
    }
    //转换类型后调用函数 
    f.(func())()

    f2,err := p.Lookup("DCallWithParam")
    if err != nil {
        panic(err)
    }

    //带参函数的调用
    f2.(func(string))("hello world,plugin.so")


}

编译动态库
go build --buildmode=plugin plugin.go
调用动态库
go run pluginload.go

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读