重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
.版本 2
创新互联建站服务项目包括阳朔网站建设、阳朔网站制作、阳朔网页制作以及阳朔网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,阳朔网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到阳朔省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
.子程序 _按钮2_被单击
鸣叫 ()
.子程序 _按钮3_被单击
播放音乐 (#声音1, )
.子程序 _按钮1_被单击
播放次数 = 1
' 播放MP3 (, 你想播放的音乐的路径)
已经发到你的邮箱了!
你好,使用golang写动态库,再使用易语言写界面,肯定有不少人有这种想法吧;但中间有些坑,这里留下一些解决方法。
一、如何编译?
请先安装gcc编译器,选择32位
由于易语言只支持32位dll,使用64位会出错,例如找不到此函数;
必须先设置两项配置:set GOARCH=386,set CGO_ENABLED=1,用cmd;
编译命令:go build -ldflags "-s -w" -buildmode=c-shared -o dlldemo.dll dlldemo.go 。
二、形参与返回值
在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 在即将出栈时释放,会造成易语言得不到返回值;
解决方法,声明全局变量,将结果赋值给全局变量,专门定义一个释放函数例如FreeAll() 用于释放!
四、如何调用
在填写dll命令时,请在填写,在库中对应命令名时,前面加个 @ ,不然会出现栈错误;
每次调用返回值是文本型dll命令时,请都使用前面准备的 FreeAll() 释放内存!
通过易语言的便捷,为自己的golang小项目加点gui吧,这里留下源码,给有需要的人。
希望能帮到你。
写单击登录按钮发生发下两个事件
信息框("登录成功", #信息图标 ,"提示")
播放音乐() '声音文件你要先自己添加一个声音常量
你可以记录按钮被单击的次数n,然后记录,如果真(n=1)编辑框1.内容=xx如果真(n=2)编辑框1.内容=xxx 依次往后写就可以实现
你要的源码:
yun哈pan.cn/lk/Q2WkyCNkKZrUc
上面的地址先把“哈”去掉,复制到浏览器然后可以下载