在win32 c扩展中使用php_strtolower

时间:2016-06-18 09:53:35

标签: php c php-extension

我正在尝试为win32平台构建一个php扩展,在php源代码中我找到了一个我想要使用的函数php_strtolower(char *,unsigned int length),但当我尝试调用它时,视觉工作室抱怨缺少符号。

  

创建库C:\ projects \ php_mt4_ext \ Debug \ php_mt4_ext_debug.lib   和对象C:\ projects \ php_mt4_ext \ Debug \ php_mt4_ext_debug.exp   Manager.obj:错误LNK2019:未解析的外部符号   “__declspec(dllimport)char * __cdecl php_strtolower(char *,unsigned   int)“(__ imp_?php_strtolower @@ YAPADPADI @ Z)在函数中引用   “struct _zval_struct * __cdecl GET_MANAGER_ERROR(struct manager_object   *,void * * *,class std :: basic_string,class std :: allocator>,int)“   (?GET_MANAGER_ERROR @@ YAPAU_zval_struct @@ PAUmanager_object @@ PAPAPAXV?$ basic_string的@ DU?$ char_traits @ d @ @@ STD V'$分配器@ d @ @@ 2 STD @@ H + Z)   C:\ projects \ php_mt4_ext \ Debug \ php_mt4_ext_debug.dll:致命错误   LNK1120:1个未解析的外部

我正在做的代码非常简单,如下所示

  

php_printf(php_strtolower( “你好”,strlen的( “你好”)));

我正在导入php5ts.lib,所有其他php函数似乎没有任何问题,但这些函数都有。

任何人都知道为了能够使用这些功能我是否应该做任何特别的技巧?

1 个答案:

答案 0 :(得分:0)

问题是我包括了,我的项目是一个c ++ 代码库。

所以我需要在extern" C"中包装php标题,例如

extern "C" {    
    #include <php.h>    
    #include <info.h>   
    #include<zend_exceptions.h>     
    #include <zend_interfaces.h>    
    #include <ext/standard/php_string.h>
}

然后编译没有任何问题