|
分享源码
界面截图: |
|
是否带模块: |
纯源码 |
备注说明: |
- |
本帖最后由 老衲jack 于 2024-8-9 15:33 编辑
之前遇到个项目是使用v8执行js代码,虽然运行没问题的。但太重了,执行效率低下。
所以想着用go语言生成32位的dll,然后让易语言调用。
借助强大的ai,直接将js代码转成go版的,然后生成dll后,易语言调用的很顺滑。
之前论坛有大神发布过,我按他的方法弄了好多次才成功。
今天借:把下列的JS代码写成易语言的_精易论坛 (125.la)。这个问题帖子,在次弄下步骤.结果也正常!。
1,保证32位的mingw32. cmd命令:set CC=C:\mingw32\bin\i686-w64-mingw32-gcc.exe
2,set GOARCH=386
set CGO_ENABLED=1
3, 确保 PATH 环境变量包含了 C:\mingw32\binset PATH=C:\mingw32\bin;%PATH%
4、确认编译器路径 gcc -v
5、尝试编译+编译命令
go build -ldflags "-s -w" -buildmode=c-shared -o mydll.dll main.go
6,go代码编写的时候,需要将变量转换。
如:a.传入的参数是:input *C.char (易语言的文本型)
1.在代码里需要转换将 goInput := C.GoString(input) C 字符串转换为 Go 字符串//
2.返回结果的时候,需要将go字符串转c字符串。C.CString(result)
3.可以理解成:C.GoString=到go字符串 C.CString=到C字符串(我蠢,只能这么理解。。。)
b.如传入参数是 input C.int (易语言的整数型)
1,go语言代码里 用 int(input) 转一下。
2,其他类型的都差不多,我入坑这个也不久。大神不要笑话。。。
c.释放内存,C.CString 必须 Free 否则会导致内存泄漏 在代码里面我使用了一个变量来反馈结果,然后还需要释放他。
7,环境如下:
main.rar
(492.72 KB, 下载次数: 16)
|
评分
-
查看全部评分
|