我已经编写并编译了php扩展,但是当我尝试运行php时,我得到了这个错误 PHP警告:PHP启动:无法加载动态库'/usr/lib/php5/20100525+lfs/mylib.so' - /usr/lib/php5/20100525+lfs/mylib.so:未定义符号:_ZNK4Data10strtolowerEPKc in Unknown on第0行 的 data.h
class Data
{
public:
// ...
char *strtolower ( const char * const ) const;
};
data.cpp
inline char *Data::strtolower(const char *const str) const
{
char c, *b = estrdup(str), *s = b;
while(*s != '\0' && (c = *s))
{
*s++ = (c >= 0x41 && c <= 0x5a) ? c + 0x20 : c;
}
return b;
}
这个错误是什么以及编译代码的原因是什么?主要问题是如何解决它?
答案 0 :(得分:0)
我写了两个可以帮助你的答案:
Linux C++ LD_LIBRARY_PATH suppressing standard libraries
How to call function from .so file using php script?
具体来说,我认为您的错误是您的模块不在ldcache中(请参阅第一个答案)。
此外,您无法在cpp文件中内联。内联仅适用于标题。删除内联,如果您的模块位于ldcache或LD_LIBRARY_PATH中,它可能会起作用。