【问题标题】:PHP Warning: PHP Startup: Unable to load dynamic library './lib.so' - ./lib.so: undefined symbol: * in Unknown on line 0PHP 警告:PHP 启动:无法加载动态库 './lib.so' - ./lib.so:未定义符号:* in Unknown on line 0
【发布时间】:2013-07-21 00:55:37
【问题描述】:

我已经编写并编译了 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;
}

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

【问题讨论】:

    标签: php c++ g++


    【解决方案1】:

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

    Linux C++ LD_LIBRARY_PATH suppressing standard libraries

    How to call function from .so file using php script?

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-24
      • 2020-04-07
      • 2017-05-06
      • 2021-08-27
      相关资源
      最近更新 更多