1

如何处理 VFP 中的双指针以调用基于 c 的 DLL

我有 ac 语言 DLL,它具有如下所示的双指针参数

int fun_foo(char *str1,char **str2)  //str2 has some info. when returns from function

在 FoxPro 中,我试图从它的 DLL 中调用这个函数。我怎么能这样称呼它;我试过:

DECLARE INT fun_foo IN sample.dll STRING,STRING @

我发现 char* 可以与字符串参数一起传递,但我在双指针 string@ 不起作用时遇到了困难。谁能给出线索如何在 Visual foxpro 中为 c 函数(DLL)中的双指针参数传递参数

我从这个双指针中的函数获得的数据对我来说很重要

我正在使用 Visual FoxPro 9.0 SP1,DLL 是在 Visual c++ 2005 上制作的 32 位

提前致谢

4

2 回答 2

1

简短的回答:

使用 vfp2c32.fll

http://vfpx.codeplex.com/releases/view/71594

从帮助文件:

ReadPointer 从指定地址检索指针。

长答案:

如果您只想使用 VFP,请检查 SYS(2600)、BINTOC、CTOBIN 和 strncpy(最后一个位于 c 运行时中,无论如何您都需要它来运行 VFP 可执行文件。)

DECLARE INTEGER fun_foo IN sample.dll ;
STRING str1,;
INTEGER @pointer

m.str1 = "sometext"
m.pointer = 0

m.result = fun_foo(m.str2, @m.pointer)

现在那个指针是什么?你不说。NUL 终止的字符串?使用 strncpy。一个 INT 或一些固定长度的字符串?使用系统(2600)

于 2013-02-28T21:41:19.843 回答
0

我不知道它可以从 Foxpro 本身完成,但也许你可以(如果你精通 C)在 C 中创建一个中间 ActiveX 对象等,它取消引用你的双指针,并将其返回给 VFP?

于 2013-02-28T17:09:11.783 回答