Windows doğru API sürümü ile derleniyor PHP uzantısı

0 Cevap php

I finally ölçülemez güçlük sonra, pencere üzerinde PHP uzantısı dll çok basit bir "Hello World" tarzı oluşturduk. Ancak, başarılı bir DLL oluşturulan ve uzantıları klasöre koymak ve bu konuda php.ini anlattı olmasına rağmen, şimdi bu olsun:

PHP Warning: PHP Startup: \x81\xc2\xc0\x03L&\xc0\x03: Unable to initialize module\nModule compiled with module API=16777522\nPHP compiled with module API=20090626\nThese options need to match\n in Unknown on line 0
Warning: PHP Startup: ÂÀL&À: Unable to initialize module Module compiled with module API=16777522 PHP compiled with module API=20090626 These options need to match in Unknown on line 0

Bu benim PHP_API_VERSION 20090626 gibi görünüyor, ama nedense benim DLL PHP_API_VERSION 16777522 olduğunu sanıyor.

The tutorial below was some help in compiling an extension dll: http://www.talkphp.com/vbarticles.php?do=article&articleid=49&title=creating-custom-php-extensions

Kendim yazılı olması, söz php uzantısı için kaynak kodunun tüm erişim - Ama, nerede ben DLL biter PHP_API_VERSION kontrol olduğunu?

Ben Borland C + + Builder v5.5 değil, Visual Studio ile başarılı dll derleme ediyorum.

Bu konularda durumda İşte tam kaynağıdır:

// Needed to make following two #includes compatible with borland header files
void __fastcall __assume(int t) {
  return;
}
typedef unsigned int socklen_t;
typedef enum BOOL
{
  false=0,
  true
} bool;
// end Borland compatibility code

#include "php.h"
#include "zend_config.w32.h"
ZEND_FUNCTION(fetch_LinkGrammar_links);

zend_function_entry LinkGrammar_ext_functions[] = {
    ZEND_FE(fetch_LinkGrammar_links, NULL)
    {NULL, NULL, NULL}
};

zend_module_entry LinkGrammar_ext_module_entry = {
    STANDARD_MODULE_HEADER,
    "LinkGrammar Extension",
    LinkGrammar_ext_functions,
    NULL, NULL, NULL, NULL, NULL,
    "1.0",
    STANDARD_MODULE_PROPERTIES
};

ZEND_GET_MODULE(LinkGrammar_ext);

ZEND_FUNCTION(fetch_LinkGrammar_links)
{
    bool World = false;
    char *RetVal= "";
    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|b", &World) == FAILURE)
    {
        RETURN_STRING("Missing Parameter", true);
    }
    if (World == true)
    {
        RetVal= "Hello World";
    }
    else
    {
        RetVal= "Hello";
    }

    RETURN_STRING(RetVal, true);
}

Ben API eşleşmesi gerektiğini PHP Başlangıç ​​Hata ortadan kaldırmak için ne değiştirebilir?

0 Cevap