我正在尝试为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函数似乎没有任何问题,但这些函数都有。
任何人都知道为了能够使用这些功能我是否应该做任何特别的技巧?
答案 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>
}
然后编译没有任何问题