如何用VC6编一个联接SQL2000数据库的句柄,并编译成.fll的格式,给VFP9.0调用,只要求一个简单的实例,大侠高手们,高台贵手一下!
5条回答 默认 最新
- lhg1094460152 2015-06-06 15:59关注
创建用于VFP的动态库(FLL格式)
一、使用VC98创建FLL文件的步骤:
1. 打开VC98,并在VC中新建空项目(Win32 Dynamic-Link Library动态库)
2. 添加或编写源代码文件,如格式为*.C,不能用*.cpp表示的文件。参考例子Hello.c的内容如下:
#include
void hello(ParamBlk *parm) // the function definition
{
_PutStr("\nHello, World!\n"); //print the message
}
Example(ParamBlk *parm)
{
// 通过使用 #define 快捷方式使得 paramBlk 结构易于管理
#define p0 (parm->p[0].val)
#define p1 (parm->p[1].val)
// 确保有足够的内存
if (!_SetHandSize(p0.ev_handle, p0.ev_length + p1.ev_length))
_Error(182); // "内存不足"
// 锁定句柄
_HLock(p0.ev_handle);
_HLock(p1.ev_handle);
// 将句柄转换为指针并确保串是由 null 作终止符
((char *)_HandToPtr(p0.ev_handle))[p0.ev_length] = '\0';
((char *)_HandToPtr(p1.ev_handle))[p1.ev_length] = '\0';
// 用 API 函数 _StrCpy 连接串
_StrCpy((char *)_HandToPtr(p0.ev_handle) + p0.ev_length,
_HandToPtr(p1.ev_handle));
// 将已连接的串返回给 Visual FoxPro
_RetChar(_HandToPtr(p0.ev_handle));
// 解除句柄锁定
_HUnLock(p0.ev_handle);
_HUnLock(p1.ev_handle);
}FoxInfo myFoxInfo[] = {
{"HELLO",(FPFI) hello, 0, ""},
{"STRCAT", Example, 2, "CC"},
};
FoxTable _FoxTable = {
(FoxTable *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};
其中红色部分为函数定义,可定义多个函数;而紫色部分为导出的函数说明(函数名,内部函数名,参数个数,参数类型),若有多个函数,则相应地要写几个。
3. 项目设置(很关键,设置不对会导致编译错误)
点击项目(Project)中<设置(Settings)>,
(1)在C++选项卡中,删除编译器开关参数中的 /GZ。
(2)在Link选项卡中,添加WINAPIMS.LIB和msvcrt.lib(建议msvcrt.lib放在最后)即可成功二、使用VFP命令
在VC源代码文件中的格式如下:
_Execute(“命令”)
注意命令中变量的值与VC中的同名变量无关.
三、调试FLL:
可以在.C 源代码中使用_BreakPoint()命令启动调试器,然后,然后可逐语句进行调试。
1. .C 源代码中包含 _BreakPoint() 函数。
2. 启动调试器。
3. FoxPro 从调试器中启动。
4. 加载库并调用函数。
5. 逐句通过 C 源代码并随后返回到 FoxPro。
6. 退出 FoxPro。
7. 退出调试器。
四、在VFP中使用FLL动态库
启动 Visual FoxPro 程序后并发出 ' SET LIBRARY to < DLL 文件 >
使用函数与使用系统函数一样,没有两样。
本文难免有不妥之处,请来邮告知, 以便共同进步。来信请邮:498890448@qq.com.
2010-12-12创建DLL函数(32位动态库DLL格式):
创建DLL格式的动态库,网络上介绍的相关资料很多,笔者不想多谈。注意,在利用VC开发并编译时,应使用__cdecl*,否则无法使用.
导出的函数应使用以下格式:
extern "C" __declspec(dllexport) int sy(int x, int y);
或extern "C" int __declspec(dllexport) sy(int x, int y);
导出符号 函数类型 函数名(参数类型名称)本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥30 STM32 INMP441无法读取数据
- ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
- ¥15 用visualstudio2022创建vue项目后无法启动
- ¥15 x趋于0时tanx-sinx极限可以拆开算吗
- ¥500 把面具戴到人脸上,请大家贡献智慧
- ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
- ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
- ¥30 c#打开word开启修订并实时显示批注
- ¥15 如何解决ldsc的这条报错/index error
- ¥15 VS2022+WDK驱动开发环境