2021-06-12 来源:华纳网 责任编辑:王双双 人气:
核心提示:【谷雨课堂】Go实战 No.011 Go干货!编写生成DLL链接库
编写生成DLL链接库知识点:
函数
结构体

内容:
大家好,欢迎来到谷雨课堂

DLL是程序开发非常重要的使用方式,
那么我们在Go语言中也是可以生成DLL链接库供其它语言使用的,

不过首先我们需要安装一个gcc的编译器,
谷雨老师使用的编译器是mingw
把下载下来的压缩包解开放在任意目录,
再把环境变量加入到path中即可开启本节的代码了!~

//【谷雨课堂】Go实战 No.011 Go干货!编写生成DLL链接库
package main
//go build -ldflags "-s -w" -o main.dll -buildmode=c-shared main.go
import "C"
import "fmt"


//下面句不是注释,必须保留,是导出函数的含义
//export echo

func echo() {
  fmt.Println("我是DLL里的函数")
}

//export Sum
func Sum(a int, b int) int {
  return a + b
}


func main() {

}

扩展阅读,什么是DLL?
DLL 是一个库,其中包含可同时由多个程序使用的代码和数据。例如,在 Windows 操作系统中,Comdlg32 DLL 执行与对话框相关的常见功能。每个程序都可以使用此 DLL 中包含的功能来实现"打开 " 对话框。它有助于促进代码重用和有效内存使用。
通过使用 DLL,可以将程序模块化为单独的组件。例如,会计程序可以按模块出售。如果安装了该模块,则每个模块都可以运行时加载到主程序中。由于模块是分开的,因此程序的加载时间会更快。并且仅在请求该功能时加载模块。
此外,更新更易于应用于每个模块,而不会影响程序的其他部分。例如,你可能有一个工资单计划,并且税率每年会发生变化。当这些更改与 DLL 隔离时,可以应用更新,而无需再次生成或安装整个程序。

DLL的优势

当程序或 DLL 在另一个 DLL 中使用 DLL 函数时,将创建依赖项。程序不再自我包含,如果依赖关系断开,程序可能会遇到问题。例如,如果发生下列操作之一,该程序可能无法运行:
从属 DLL 将升级到新版本。
从属 DLL 已修复。
使用早期版本覆盖从属 DLL。
从计算机中删除从属 DLL。
这些操作称为 DLL 冲突。如果未强制向后兼容,则该程序可能无法成功运行。
以下列表介绍了在 Windows 2000 和更高版本的 Windows 操作系统中引入的更改,以帮助最大程度地减少依赖项问题:
Windows 文件保护
在 Windows 文件保护中,操作系统可防止未经授权的代理更新或删除系统 DLL。当程序安装尝试删除或更新定义为系统 DLL 的 DLL 时,Windows 文件保护将查找有效的数字签名。
专用 DLL
使用专用 DLL,可以将程序与对共享 DLL 所做的更改隔离开。专用 DLL 使用特定于版本的信息或空文件来强制执行程序使用的 .local DLL 版本。若要使用专用 DLL,请在程序根文件夹中找到 DLL。然后,对于新程序,将特定于版本的信息添加到 DLL。对于旧程序,请使用空 .local 文件。每个方法都指示操作系统使用位于程序根文件夹中的专用 DLL。



完整的源代码可以登录【华纳网】下载。
https://www.worldwarner.com/













免责声明:本文仅代表作者个人观点,与华纳网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。