PHP拡張子を作成するときの未定義のリファレンス -- c++ フィールド と zend-framework フィールド と php-extension フィールド 関連 問題

Undefined reference when build a php extension












1
vote

問題

日本語

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 Engineの一部ですが、私はよくわからない。

英語

I'm trying to make a custom session handler for PHP. (I didn't find a clear documentation about that. If you have a good links, I will be happy to read it ;) )

So when I try to use a zend function like zend_string_init Example

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;  } 

To build my linker dependency list I use theses line in my 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 

The linking command with the error

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 » 

So I don't find the library I need to link with.

Do you have any ideas ?

Thanks I advance for your help ;)

Edit about duplicate issue:

I thinks, it's not a duplicate question. The related question is about "what is the error undefined reference ...".

I knows what is this kind of error. I just don't not find the library I need to link with. It's probably a part of zend engine but I'm not sure.

</div
        
     
     

回答リスト

1
 
vote
vote
ベストアンサー
 

問題を見つけました。私は実行可能ファイルのように私のプロジェクトを構築しますが、PHPにはライブラリが必要です。 あなたの助けをありがとう

 

I found the problem. I build my project like an executable but PHP require a library so.... Add -shared to my build option fix the problem. Thanks for your help

</div
 
 

関連する質問

1  PHP Extension:Config.M4、おそらく未定義のマクロ:LT_SHARED_LIBADD  ( Php extension config m4 possibly undefined macro lt shared libadd ) 
私はPHP拡張を開発しています(私の最初のものではありません)、しかし今日は私がつまずく 問題がありませんでした:私がphpizeを実行するとき、私はこの出力を取得します: <事前> <コード> error: possibly undefined macro:...

3  WAMPSERVERにAPCを使用するパフォーマンス向上はありません  ( No performance gain with apc on wampserver ) 
私は私の開発プラットフォームとして wampserver を使用しています。 PHPアプリケーションを書き込むにはLinux上で実行されます。 私は apc にかなり慣れています。そして私のために持っている必要があります。しかし、私はそれをWindowsで使う...

2  PHP Extension Dioはロードされていませんか?  ( Php extension dio is not loaded ) 
DIO拡張機能を使用してCOMポートと通信しようとしていますが、機能していません。私はすでにmy extフォルダに.dllファイルを追加しましたが、PHP Info()でDIOサポートを有効にしても構いません。私はすでにXamppサーバーを2回以上再起動して...

3  単純なHello World PHPの拡張は実行できませんでした  ( Simple hello world php extension could not be executed ) 
私は単純なHello World PHP拡張を実行しようとしていますが、作り付け&amp。拡張機能をインストールし、テストスクリプトを実行したい場合は、次の問題が発生しています。 <事前> <コード> P Warning: PHP Startup: Unab...

5  拡張子を書かずにPHPのC / C ++コードを使用する  ( Using c c code in php without writing an extension ) 
私は読み取り、拡張子を書くことによってPHPでC / C ++コードを使用することが可能です。魔法やそのようなものを包むののような簡単な方法はありますか(私は言った、私は言葉を聞いたが、ラッパーが何であるかについてはあまり知らない)。 ...

0  PHPスクリプトから共有ライブラリファイルの実行  ( Executing shared library file from php script ) 
共有ライブラリclient.soを作成しました。 IT MAIN()関数を実行すると、ユーザーから文字列を読み取り、関数 ch=foo(buffer); を実行する。 main.cppはここにあります: <事前> <コード> #include<stdio....

0  Contao 3.5とImagick PHPの拡張子  ( Contao 3 5 and imagick php extension ) 
PDFファイルからJPGイメージを作成するためにPHP拡張「Imagick」を使用しようとしています。 私はContao 3.5.14 を使います この拡張機能が必要な2つの状況があります。 最初の状況は、PDFファイルをニュース記事に添付する場合です。 こ...

1  FreeBSD 8.3にPHP5-GDをインストールするとき(共有ライブラリ "png.6"は存在しません)  ( Error when install php5 gd on freebsd 8 3shared library png 6 does not exist ) 
PHPを5.3に更新しました。しかし、私はGD拡張機能をインストールすることはできません(FreeBSD 8.3) エラーライン: <事前> <コード> # cd /usr/ports/graphics/php5-gd/ # make install cle...

4  XAMPPのDBASE拡張子のインストール  ( Installing dbase extension in xampp ) 
PHP 5.5.11を備えたXAMPPでDBASE拡張子をインストールすることに問題があります。 php_dbase.dll をphp / extフォルダに追加し、 php.ini file:に追加しました。 <事前> <コード> extension=p...

31  Mac OS XのPHPでPostgreSQLサポートを有効にする  ( Enabling postgresql support in php on mac os x ) 
私のMac上で正しく機能するコマンド "pg_connect()"を取得しているというひどい時間があります。 PostgreSQLデータベースを読み込み、レポートを電子メールで送信するには、現在PHPスクリプトを書いています。 私は私の php.ini ファ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有