1

我已经编写并编译了 php 扩展,但是当我尝试运行 php 时出现此错误 PHP 警告:PHP 启动:无法加载动态库 '/usr/lib/php5/20100525+lfs/mylib.so' - /usr/ lib/php5/20100525+lfs/mylib.so:未定义符号:_ZNK4Data10strtolowerEPKc in Unknown on line 0 data.h

class Data
{

public:
     // ...
     char *strtolower  ( const char * const ) const;
};

数据.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;
}

这是什么错误以及为什么要编译代码?主要问题是如何解决它?

4

1 回答 1

0

我写了两个答案,可以帮助你:

Linux C++ LD_LIBRARY_PATH 抑制标准库

如何使用 php 脚本从 .so 文件调用函数?

具体来说,我认为您的错误是您的模块不在 ldcache 中(请参阅第一个答案)。

此外,您不能在 cpp 文件中内联。内联仅适用于标题。如果您的模块位于 ldcache 或 LD_LIBRARY_PATH 中,则删除内联可能会起作用。

于 2013-07-24T06:50:53.843 回答