欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 编程语言 > c# >内容正文

c#

go 调用其他文件函数-凯发k8官方网

发布时间:2024/10/12 c# 36 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 go 调用其他文件函数_【c# 调用 go 语言】0x1 hello golang 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

c# 和 golang 都不是世界上最好的语言。在不同的业务场景下,c# 和 golang 各有所长。如果要编写一个网络程序,显然 golang 更擅长,而如果要编写一个桌面 gui 程序,那么 c# 简直不要太爽。我们完全可以将两者用在同一个项目中,各取所长。golang 支持将源代码编译为动态链接库(dll),这让我们在 c# 调用 golang 成为可能。

本篇代码可以在:https://gitee.com/coderbusy/golang-with-csharp 找到。

如何在 c# 中调用 golang 函数?

go 语言提供了 cgo 机制,使得能够在 go 代码中直接调用 c 的库函数,此外还支持在 c 语言中调用 go 函数,非常强大。golang 支持将 go 函数导出给 c 语言使用,那么也同样可以给 c# 使用。

cgo 环境搭建

要使用 cgo 特性,需要安装 c/c 构建工具链,在 macos 和 linux 下是要安装好 gcc,在 windows 下是需要安装 mingw 工具。如果你的电脑上已经安装好 gcc ,则可以跳过本小节。

关于 mingw 的安装网上已经有很多教程,本篇将介绍一种更简单的方法来安装 mingw :通过安装 qt 来部署 mingw 到本机(该方法来自:ha666)。qt 的安装包中自带了 mingw 环境,我们只要安装 qt 开发包,那么附带的 mingw 环境就安装好了。

qt 的下载地址可以在:http://download.qt.io/archive/qt/ 中找到,目前(2020年1月28日)最新的版本是 5.14.1 ,windows 版的下载地址是:qt-opensource-windows-x86-5.14.1.exe 。

如果你没有且不想创建 qt 的网络账户,那么在运行 qt 的安装文件之前,可以先断开网络,这样就不会出现 qt 账户的注册和登录界面:

断网状态下,不会出现账号注册和登录界面,直接“next”即可。

安装过程中无需更改默认的安装目录,在“选择组件”页面时,勾选 mingw 组件:

在“选择组件”页面中,勾选 mingw 组件。

在安装完成之后,需要设置好环境变量 go 编译器才能找到 gcc 的安装位置。如果你使用的软件版本和我相同并且没有更改默认安装位置,那么这个要添加到 path 变量中的目录地址应该是:c:\qt\qt5.14.0\tools\mingw730_32\bin\

如果安装正确并配置好了环境变量,那么在命令行中键入 gcc ,将会看到以下输出:

hello golang

编写 golang 代码,文件名为 main.go 。注意:虽然我们最终要生成动态链接库,但是 main 函数仍是不可或缺的。

main.go

接下来对 go 源文件进行编译,新建一个 make.bat 文件,填入一下指令并运行:

make.bat

命令成功后,我们会得到两个文件:hellogolang.interop.h 和 hellogolang.interop.dll 。

使用 visual studio 新建 hellogolang 控制台应用程序,并将生成的目标平台设置为 x86 。将 hellogolang.interop.dll 添加到项目中,并设置为“始终复制”:

hellogolang.csproj

在 program.cs 文件中,使用 dllimport 导入外部方法并调用:

program.cs

运行程序,那么将会在控制台中看到以下输出:

hello golang 输出

其中,第一行的 hello world! 来自 c# 程序,第二行 hello c#,i'm golang! 则来自 go 程序。

总结

以上是凯发k8官方网为你收集整理的go 调用其他文件函数_【c# 调用 go 语言】0x1 hello golang的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

网站地图