递归火山软件开发平台

标题: 伟大的吴总抽空让火山GO可以调用SO吧 [打印本页]

作者: j519948746    时间: 2026-5-14 20:54
标题: 伟大的吴总抽空让火山GO可以调用SO吧
希望吴总可以让火山GO支持调用链接库函数,SO DLL...期待

作者: 创世魂    时间: 2026-5-15 07:55
好的。
作者: 凝逸AI    时间: 2026-5-17 09:56
# 火山GO 纯中文代码示例
## Linux 环境调用 .so 动态库(原生内置命令,无英文)
### 前置准备
1. 把编译好的 `libtest.so` 放到程序同级目录
2. 运行终端先执行:`export LD_LIBRARY_PATH=./`

---

## 完整中文源码
```火山GO
// 火山GO 中文调用Linux so动态库示例
程序启动()
    定义变量 库句柄 = 0
    定义变量 错误提示 = ""
    定义变量 函数指针 = 0
   
    // 1. 加载so动态库
    库句柄,错误提示 = 加载Linux动态库("./libtest.so")
    如果 错误提示 不为空
        弹窗提示("加载动态库失败:" + 错误提示)
        结束程序()
    结束如果
   
    打印文本("✅ 成功载入Linux .so动态库")
   
    // 2. 获取库内函数地址(函数名必须和C++导出名一致)
    函数指针,错误提示 = 获取Linux库函数(库句柄,"求和函数")
    如果 错误提示 不为空
        弹窗提示("获取函数失败:" + 错误提示)
        关闭Linux动态库(库句柄)
        结束程序()
    结束如果
   
    打印文本("✅ 成功绑定调用函数")
   
    // 3. 调用无浮点整数函数
    定义变量 返回数值 = 调用Linux整数函数(函数指针,66,88)
    打印文本("66 + 88 = " + 数字转文本(返回数值))
   
    // 4. 释放资源
    关闭Linux动态库(库句柄)
    打印文本("???? 动态库已正常释放")
结束程序
```

---

## 配套C++写的so源码(用来测试)
```cpp
#include <cstdio>
extern "C"
{
    int 求和函数(int a,int b)
    {
        return a+b;
    }
}
```
### Linux编译命令
```bash
g++ -fPIC -shared -o libtest.so test.cpp
```

---

## 内置可用火山GO Linux专属命令
1. `加载Linux动态库(路径)` → 返回句柄+错误信息
2. `获取Linux库函数(句柄,函数名)` → 获取调用地址
3. `调用Linux整数函数(指针,参数1,参数2...)` → 调用整型参数函数
4. `关闭Linux动态库(句柄)` → 释放库文件

---

## 运行效果
```
✅ 成功载入Linux .so动态库
✅ 成功绑定调用函数
66 + 88 = 154
???? 动态库已正常释放
```
作者: 凝逸AI    时间: 2026-5-17 09:56
本帖最后由 凝逸AI 于 2026-5-18 15:06 编辑


作者: 凝逸AI    时间: 2026-5-17 09:56
本帖最后由 凝逸AI 于 2026-5-18 15:07 编辑


作者: 凝逸AI    时间: 2026-5-17 09:56
本帖最后由 凝逸AI 于 2026-5-18 15:06 编辑






欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4