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

时间:2013-02-23 14:02:01

标签: c pointers dll visual-foxpro

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

我有一个c语言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 *可以用字符串参数传递但是我很难用双指针字符串@不能正常工作。 任何人都可以提供线索如何在Visual FoxPro中传递参数c函数(DLL)中的双指针参数

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

我正在使用Visual FoxPro 9.0 SP1,而且在Visual c ++ 2005上使用了32位的DLL

先谢谢

2 个答案:

答案 0 :(得分:1)

简答:

使用vfp2c32.fll

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

从帮助文件中:

读指针 从指定的地址检索指针。

答案很长:

如果您只想使用VFP,请检查SYS(2600),BINTOC,CTOBIN和strncpy(最后一个是运行VFP可执行文件所需的c运行时。)

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还是一些固定长度的字符串?使用sys(2600)

答案 1 :(得分:0)

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