Skip to content

Linkangyis/GoLangLinkDLL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GoLangLinkDLL

简介:在Windows使用go链接用go开发的DLL

开发背景

在原本的Go标准库中,是不支持之间使用go链接用go开发的DLL这在我们开发中带来了许多不便
此"框架/插件"致力于解决以下两个issues的问题
1.golang/go#19282
2.golang/go#22192

食用方法

可以直接测试/Demo中的实例DLL(./test.dll就来自/Demo中的实例)
  1. 编译DLL(需要GCC以及开启CGO) 请注意public包,包位置自行修改
go env -w GO111MODULE=auto
go build -buildmode=c-shared -o test.dll ./
  1. 测试程序
package main

import (
	"TestDLL/LoadDll"
	"TestDLL/Public"
	"fmt"
)

func main() {
	Tmp := make(map[int]string)
	Tmp[0] = "123123"
	Tmp[1] = "你好"
	Open := load.OpenDLL("./test.dll")
	fmt.Println(Open.LoadFunc("Demo")(Tmp))
	fmt.Println(Open.ReadConfig())
	fmt.Println(public.Tmp)
}

3 运行

go run test.go

map[0:123123 1:你好] <DLLLOAD>
你好
123123
{false 你好}
map[0:Demo]
0    //这里的0未修改,证明DLL是无法修改共享包中的全局变量 这点和Linux中的Plugin不一样

About

在Windows平台下使用go链接用go开发的DLL

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published