c语言自定义char*函数返回值是乱码_【C# 调用 Go 语言】0x2 参数、返回值与类型转换...

本文介绍了如何在C#中调用Go语言编译的动态链接库,涉及参数传递、返回值处理及类型转换。通过示例展示了C#调用Go方法的基本流程,并探讨了CGO、P/Invoke在其中的作用。同时,文章详细讨论了字符串类型的参数处理,包括内存管理和自定义转换器以避免内存泄漏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在上篇文章【C# 调用 Go 语言】0x1 Hello Golang  中,我们将 Golang 源码编译为动态链接库(dll),用 C# 调用 Golang 导出的方法并成功的看到了控制台的输出。本篇文章将对 C# 调用 Golang 方法做更详细的介绍,涉及如何对 Golang 方法进行传参、获取返回值以及处理调用过程中的类型转换。

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

基本的传参与返回值

使用 Golang 编写一个名为 Check 的方法,该方法接收两个整型的参数(i1,i2)并返回一个布尔值,当 i1 > i2 时返回值为 True,否则为 False :

7b6af90c25ea751a0457393a85d2b89b.png

需要一个 make.bat 文件,用于生成动态链接库:

be575505b55f90b886b1e98c52f8d8fd.png

同上篇,将 C# 项目 Golang.Ioc 的目标平台设置为 x86 ,将生成的 Golang.Ioc.Interop.dll 复制到项目中并设置为始终复制:

1329f2571f53e47cefeb10c0e2a734a2.png

使用 P/Invoke 调用导出的方法:

202a2b009dfedf91735be96c16042771.png

运行之后,程序将会产生如下输出,程序行为符合我们的预期:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值