使用VC++開發PHP擴充注意事項_PHP教程

來源:互聯網
上載者:User
一、預設情況下,C++是使用.cpp作為副檔名的,而PHP是用C寫的,因此必須使用C++提供的C串連交換指定符號extern "C"來解決這個問題,以下兩部分語句必須被包含:
extern "C" {
#include "php.h"
#include "php_ini.h"
#include "ext/standard/info.h"
... // 其他C標頭檔
}

extern "C" {
#ifdef COMPILE_DL_MYEXT
ZEND_GET_MODULE(myext)
#endif
}
二、STL模版定義是不能被包含在C串連交換指定符的,而PHP需用到math.h這個標頭檔,因此編譯的時候會產生math.h(514) error c2894: templates cannot be declared to have 'C' linkage的錯誤資訊,要解決這個問題,需在你的CPP檔案頭部也就是extern "C"串連符之前加入以下代碼:
#ifdef WIN32
#include
#endif
三、同C中一樣,必須先在標頭檔如:php_myext.h)中申明所有函數原型,如果沒有使用標頭檔,那麼必須在CPP檔案如:ext.cpp)的zend function結構之間申明所有函數原型,也就是在如下代碼之前:
function_entry myext_functions[] = {
PHP_FE(confirm_myext_compiled, NULL) /* For testing, remove later. */
{NULL, NULL, NULL}
};

http://www.bkjia.com/PHPjc/589781.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/589781.htmlTechArticle一、預設情況下,C++是使用.cpp作為副檔名的,而PHP是用C寫的,因此必須使用C++提供的C串連交換指定符號extern "C"來解決這個問題,以下兩部...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.