c++ - 构建 php 扩展时 undefined reference

标签 c++ zend-framework php-extension

我正在尝试为 PHP 创建自定义 session 处理程序。 (我没有找到关于此的明确文档。如果您有很好的链接,我会很乐意阅读它;))

所以当我尝试使用像 zend_string_init 这样的 zend 函数时 示例

PS_READ_FUNC(mongo)
{
    MongoClient *pMongoClient = static_cast<MongoClient*>(PS_GET_MOD_DATA());
    if(pMongoClient == nullptr)
        return FAILURE;

    std::string strSessionId = (char *)key;
    std::string strSessionData = pMongoClient->read(strSessionId);

    *val = zend_string_init(strSessionData.c_str(), strSessionData.size(), true); //generate a unreference error on __zend_malloc and _emalloc
    return SUCCESS;

}

为了构建我的链接器依赖列表,我在我的 makefile 中使用了这些行

PHP_LINKER_DEPENDENCIES =   $(shell php-config --libs)
> php-config --libs
-lcrypt -lresolv -lcrypt -lz -lpcre -lrt -lm -ldl -lnsl -lxml2 -lssl -lcrypto -lcrypt -lcrypt

错误的链接命令

g++ -L/usr/lib/php/20151012 -L/usr/lib/x86_64-linux-gnu  -o session_storage.so main.o  -lcrypt -lresolv -lcrypt -lz -lpcre -lrt -lm -ldl -lnsl -lxml2 -lssl -lcrypto -lcrypt -lcrypt -L/usr/local/lib -lsasl2 -lssl -lcrypto -lrt -lmongoc-1.0 -lbson-1.0 -lphpcpp

session_storage.o: dans la fonction « zend_string_alloc »:
/usr/include/php/20151012/Zend/zend_string.h:121: référence indéfinie vers « __zend_malloc »
/usr/include/php/20151012/Zend/zend_string.h:121: référence indéfinie vers « _emalloc »

所以我没有找到我需要链接的库。

编辑重复问题:

我认为,这不是一个重复的问题。相关问题是关于“错误 undefined reference 是什么......”。

我知道这是什么错误。我只是找不到我需要链接的库。它可能是 zend 引擎的一部分,但我不确定。

最佳答案

我发现了问题。我像可执行文件一样构建我的项目,但 PHP 需要一个库,所以......将 -shared 添加到我的构建选项中解决了这个问题。 感谢您的帮助

关于c++ - 构建 php 扩展时 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37521960/

相关文章:

c# - 需要从非托管 C++ 代码调用托管代码

python - 使用 boost.python,如何扩展类的 __dir__ 函数?

php - Zend_Db 的 Where 子句未按预期工作

php - 使用 Ajax 和 Jquery 设置 Iframe 目标?

php - Zend - index.php 错误 - 未打开 Zend/Application.php

php - 将 php5 模块移植到 php 7 和编译时出现 zend_string 问题

php - 从 PHP 中的扩展函数返回 unsigned long long

c++ - ft_isalnum 这个函数有什么作用?

PHP 扩展未通过 httpd 找到,但可以从 CLI 找到,具有相同的 php.ini

c++ - C++ setter 函数崩溃