如何在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
先谢谢
答案 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?