两个方法,我给你思路:
1)
call_user_function_ex(EG(function_table), NULL, func, &t, 1, args, 0,NULL TSRMLS_CC);
2)
直接link libmysql或者mysqlnd,然后调用它的函数
1)
call_user_function_ex(EG(function_table), NULL, func, &t, 1, args, 0,NULL TSRMLS_CC);
2)
直接link libmysql或者mysqlnd,然后调用它的函数
编译命令要怎么写
我现是用
msdev myphpext\myphpext.dsp /MAKE "myphpext - Win32 Release_TS"
在windows下
但是我 #include <mysql.h>
提示mysql.h找不到
zval **args[1];
zval *retval;
zval *arg1;
args[0]=&arg1;
int arg_count=1;
call_user_function_ex(EG(function_table), NULL, fname, &retval, arg_count, args, 0,NULL TSRMLS_CC);
fname就是函数名,retval就是返回值,arg_count就是传入的参数数目,args就是参数。第一个参数一般来说都是固定的,第二个参数除非是调用类方法,否则为NULL。call_user_function_ex的作用是在c层面呼叫php的函数。其实,既然你都能调用PHP的mysql函数了,那么libmysql肯定也是编译进去了,这时候直接用libmysql的函数即可。至于libmysql的用法么,我先问你,你以前写过调用第三方库的c程序吗?如果没写过,你应该先去了解一下如何在C程序里使用别人的库。mysql.h是MySQL(libmysql也在里面)附带的,你必须去mysql的官方站点下。#include <mysql.h> 的意思是说从$PATH里找这个h文件,你也可以以普通路径的形式调用,例如#include "../MySQL/mysql.h"你不应该来csdn问的,这里很少会有人回答你这种问题。
谢谢你 surfchen.
只是有一点我不明白,为什么不能用原c的printf来打印,而非要用php_printf才可以呢