构建php扩展时未定义的引用

时间:2016-05-30 09:18:47

标签: c++ zend-framework php-extension

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

所以当我尝试使用像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 »

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

你有什么想法吗?

谢谢我向你求助;)

编辑重复问题:

我认为,这不是一个重复的问题。相关问题是关于“错误未定义参考是什么......”。

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

1 个答案:

答案 0 :(得分:1)

我发现了问题。我构建我的项目就像一个可执行文件,但PHP需要一个库,所以....添加-shared到我的构建选项修复问题。 谢谢你的帮助

相关问题