Я пытаюсь создать расширение php 5.2.17 для моей библиотеки С++. Я использую Visual Studio 2005 на Windows XP с Sambar Server 7.0. У меня есть два вопроса:
Я не смог включить вещи С++ (строки или карты STL) в свой код. Это дает ошибку, например: «PHP обнаружил нарушение прав доступа на 00CF421B». Как я могу использовать строки и карты STL в моей dll.
Я пытаюсь создать dll С++, которая содержит функцию с 3 параметрами строкового типа и возвращает 2-ю строку из этих 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";
-> здесь 1-я строка возвращается нормально, когда для этой функции были установлены два параметра.
-> при попытке вернуть вторую строку с двумя параметрами для этой функции я получаю сообщение об ошибке: «PHP обнаружил нарушение прав доступа на 014AE07C»
-> при попытке с 3 параметрами, такими как приведенный выше код, мой сервер Sambar закрывается сам по себе ... нет шансов увидеть результат.
Почему это странное поведение, где я ошибаюсь?
Заранее спасибо
Анил