簡體   English   中英

從php擴展名到C ++調用compact()

[英]Calling compact() from php extension to C++

這是我的代碼:

  zval compact, compact_params[1], compact_result;
      zval A;
      ZVAL_STRING(&A, "test");
      ZVAL_STRING(&compact, "compact");
      ZVAL_STRING(&compact_params[0], "A");
      call_user_function(EG(function_table), NULL, &compact, &compact_result, 1, compact_params);

當我從php調用它時說:

無法動態調用compact()

我現在不知道如何從c ++調用compact()。 我已經成功調用了不同的函數,但是此協定不同。

PHP 7似乎為某些功能添加了動態調用保護。 從PHP源代碼庫中查看此單元測試文件 我不確定這是什么目的。 您的代碼雖然可以在PHP 5中工作; 我驗證了

解決方法是,您可以查看compact功能的實現,並使用其基礎實用程序功能來完成相同的任務。 查看php_compact_var()的實現。 由於此功能是靜態鏈接的,因此您必須將代碼復制到擴展程序中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM