| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛 | 
共有 1168 人关注过本帖
标题:有没有用RUST给VFP开发FLL的朋友交流?
只看楼主 加入收藏
bobwu
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2009-7-25
收藏
 问题点数:0 回复次数:16 
有没有用RUST给VFP开发FLL的朋友交流?
本人最近使用RUST成功为VFP开发FLL,并摆脱了对微软编译器的依赖。欢迎交流。

# vfprustfll

一个最小的 Visual FoxPro 9 32 位 Rust FLL。它只注册一个 VFP 函数:`FADD(a, b)`,返回两个整数之和。例如 `? FADD(5, 6)` 显示 `11`。

## 构建

安装 Rust 1.77.2、`i686-pc-windows-gnu` 目标和 32 位 MinGW 工具链。本机的 `build.bat` 使用 `E:\install\dev\mingw32\bin`。在项目目录执行:

```bat
build.bat
```

输出文件为 `target\i686-pc-windows-gnu\release\vfprustfll.dll`。脚本检查 PE i386 格式和 `FoxTable`、`_FoxTable`、`@DispatchAPI@4` 导出,不向其他目录部署。

`libwinapims.a` 是 VFP 扩展 API 的 GNU 导入库,`pro_ext.h` 是随项目提供的 VFP SDK 接口头文件,一并保留。`@DispatchAPI@4` 必须导出,否则 VFP9 会将 DLL 判为无效 FLL。

## 在 VFP9 中使用

```foxpro
SET LIBRARY TO (FULLPATH("target\i686-pc-windows-gnu\release\vfprustfll.dll")) ADDITIVE
? FADD(5, 6)  && 11
```

也可运行项目中的 `demo.prg`。本 DLL 是 FLL,应通过 `SET LIBRARY TO` 加载,不使用 `DECLARE DLL`。`FADD` 接受两个 32 位范围内的整数,且和不能溢出;无效参数会给出 VFP 错误。

已在 VFP9 中实测加载并调用 `FADD(5,6)=11`。



[此贴子已经被作者于2026-9-18 03:01编辑过]

搜索更多相关主题的帖子: 交流 dll VFP VFP9 开发 
2026-09-18 02:35
bobwu
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2009-7-25
收藏
 得分:0 
vfprustfll.zip (158.13 KB)
,源码附上。
2026-09-18 03:07
schtg
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:USA
等 级:贵宾
威 望:67
帖 子:2792
专家分:4967
注 册:2012-2-29
收藏
 得分:0 
2026-09-18 04:57
easyppt
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:556
专家分:1076
注 册:2021-11-24
收藏
 得分:0 
nb,致敬所有为VFP添砖盖瓦的匠人们!!
2026-09-18 08:09
sam_jiang
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:14
帖 子:1272
专家分:1687
注 册:2021-10-13
收藏
 得分:0 
这就是一个dll,跟fll应该没关系吧?

2026-09-18 22:06
bobwu
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2009-7-25
收藏
 得分:0 
回复 5楼 sam_jiang
后缀名名改为fll就是fll了。
例:
SET LIBRARY TO vfprustfll.dll
?FADD(5, 6)
11
这个项目意味着,VFP融入了rust生态,继续能打。本人17年的VFP商业项目,底层计算,网络能力,加密解密,全部由RUST编写的FLL接管了。

2026-09-19 01:50
easyppt
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:556
专家分:1076
注 册:2021-11-24
收藏
 得分:0 
欢迎大师 多一些分享  RUST 和 VFP结合,尤其是 给VFP写FLL的相关知识!
2026-09-19 08:08
wcx_cc
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:52
帖 子:485
专家分:1437
注 册:2015-10-2
收藏
 得分:0 
欢迎大师、大神、高手,能开发出最新紧跟形式的 FLL,像木瓜大师那样的升级包,vfp 就能继续再跟一程。
2026-09-19 23:10
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:11667
专家分:43678
注 册:2014-5-20
收藏
 得分:0 
vfp 的 FLL 本质是一个特殊的 32位 DLL,理论上说只要能编译出给 vfp 使用的 DLL 也能编译出 FLL。

关键是要符合 VFP API 的规范(32位编译、导出 FoxTable、Pro_Ext.h 的 _RetInt、_RetChar 等等),编译 .dll 直接改名成 .fll 即可。

RUST在安全性方面比较出色,使得编程简单化。

用 RUST 写 FLL 主要问题是要手动翻译 Pro_Ext.h,如果工程大,工作量大,容易出现布局错误。

可以试试用 Rust 写业务,用 C 写 FLL 包装。写一小段 C 代码,用做 FLL 框架(FoxTable/FoxInfo),C 再调用 Rust 导出的函数。好处是 C 直接使用 vfp 的 Pro_Ext.h,不用在 Rust 手动翻译一大堆东西,减少风险,业务逻辑全部放在 Rust。




2026-09-20 07:59
schtg
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:USA
等 级:贵宾
威 望:67
帖 子:2792
专家分:4967
注 册:2012-2-29
收藏
 得分:0 
回复 9楼 吹水佬
2026-09-20 11:55
快速回复:有没有用RUST给VFP开发FLL的朋友交流?
数据加载中...
 
   
关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018172 second(s), 10 queries.
Copyright©2004-2026, BCCN.NET, All Rights Reserved