易语言linux支持多线程

易语言linux支持多线程

易语言linux支持多线程

点评

易语言使用支持多线程">使用 go语言 golang 编译 dll 给易语言使用支持多线程

之前发过一份,但是大家提到多线程问题,因此重新修改了一份源码,好支持多线程。

一、必要准备

必须导入 import "C" 并且要单独一行,在其上方的注释中必须写上 #include (这里乱码请下载附件查看);

这是在导入 C 的标准动态库头文件,若不导入将有几率编译失败。

二、形参与返回值

在go中,除了 string 特殊外,其他int、bool,等基本类型原本怎样还是怎样;

传 string 与返回值 string 都改成 *C.char 类型,其他基本类型不用改;

有三个方法比较重要,C.CString 转成c字符串,C.GoString 转成go字符串 , C.free 释放内存;

只要用到 C.CString 此方法,就必须记得释放内存。

三、内存泄漏

如果使用了 C.CString 却不使用 C.free ,内存暂用只会越来越大,最后奔溃;

释放内存时,请不要重复取地址,例如 unsafe.Pointer(&xx变量) ,这样等于没释放;

也可能是 vc6 的原因,使用 defer 在即将出栈时释放,会造成易语言得不到返回值;

解决方法,返回c字符串的同时,也将需要释放的指针传出去,再定义一个释放函数例如 Free() 用于释放!

四、如何编译

安装 tdm-gcc 编译器,可选择64位,依然可以编译出32位,下载地址:https://jmeubank.github.io/tdm-gcc/download/;

若想彻底解决 gcc 兼容性问题建议下载 msys2 后再安装 gcc,此条为建议并不一定需要;

易语言只支持32位dll,使用64位会出错,例如找不到此函数,因此下面两项设置尤为重要;

用 cmd执行两项设置:set GOARCH=386,set CGO_ENABLED=1,每次打开新的 cmd 都要重新设置;

编译命令:go build -ldflags "-s -w" -buildmode=c-shared -o dlldemo.dll dlldemo.go 。

五、如何调用

在填写dll命令时,请在填写,在库中对应命令名时,前面加个 @ ,不然会出现栈错误;

每次调用返回值是文本型dll命令时,请都使用前面准备的 Free() 释放内存!

下载地址

如果资源下载失效请到 留言板 留言或者 QQ 联系我。

本站默认解压密码:www.hibbba.com

原文链接:https://blog.csdn.net/weixin_30888681/article/details/116787730?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167042854316800184194802%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=167042854316800184194802&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-7-116787730-null-null.nonecase&utm_term=%E6%98%93%E8%AF%AD%E8%A8%80%E6%BA%90%E7%A0%81

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

资源来源于互联网和网友投稿如有侵权请及时联系客服下架 本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。 不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险以及产生法律纠纷与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除。 如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。 本站只提供资源,不提供技术支持,介意勿下!源码太多站长无法每款都进行测试请自行甄别,虚拟产品售出无退换,下载链接如有失效请及时联系客服

咖科努斯源码资源站-免费PHP网站源码模板,插件软件资源分享平台 易语言源码 易语言linux支持多线程 https://kaknus.cn/361.html

常见问题

相关文章

评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务