我想爲我的C++ dll創建php 5.2.17擴展。 Iam在Windows XP上使用Visual Studio 2005與Sambar Server 7.0一起使用。 我有兩個問題:環繞C++ dll php5擴展的問題
我能不能包括在我的代碼C++的東西(字符串或STL地圖)..它給錯誤,如:「PHP遇到一個訪問衝突在00CF421B」。如何在我的dll中使用字符串和STL映射。
我想創建一個C++ DLL其中包含字符串類型的3個參數的函數,返回的那些3.
下面第二個串是碼:
PHP_FUNCTION(add){
char* a;
char* b;
char* c;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss", &a,&b,&c) == FAILURE) {
RETURN_STRING("Bad parameters!", true);
}
//string ss=a;
//ss=ss+b;
//memset(a,0,30);
//strcpy(a,ss.c_str());
//php_printf("a : %s b : %s ",a,b);
RETURN_STRING(b,1);
}
php文件包含:
$a="abc";
$b="def";
$c="ghi";
$result = add($a,$b,$c);
print "Calling add($a,$b,$c) returned $result";
- >這裏第一個字符串返回罰款時,兩個參數爲此功能設置了專家。
- >當試圖用兩個參數,這個功能,然後我得到一個錯誤返回第二個字符串:「PHP遇到在014AE07C訪問衝突」
- >當3個參數,如上面的代碼嘗試那麼我的水鹿服務器正在關閉..沒有看到輸出的機會。
爲什麼這種奇怪的行爲,我哪裏錯了?
由於提前
阿尼爾
PHP擴展是用C編寫的,而不是C++。 如果您需要在C++應用程序中調用PHP,請使用嵌入式SAPI,但擴展本身將在C中。 – Flavius 2012-04-14 11:09:26
我已更正您的代碼,我希望您不介意。 – Flavius 2012-04-14 11:38:13