J'ai enfin a créé un très simple "PHP" style PHP Extension DLL sur les fenêtres, après incommensurable tracas. Cependant, bien que j'ai réussi à créer une DLL, et l'ai placée dans le dossier des extensions, et j'en ai parlé à php.ini, je reçois maintenant ceci:Compilation PHP Extension avec la version API correcte sur Windows
PHP Avertissement: PHP Startup: \ x81 \ xc2 \ xc0 \ x03L & \ xc0 \ x03: Impossible d'initialiser le module \ nModule compilé avec l'API de module = 16777522 \ NPHP compilé avec l'API de module = 20090626 \ options nCes doivent correspondre \ n in Unknown on line 0
Avertissement: PHP Startup: AAL & À: Impossible d'initialiser le module Module compilé avec le module API = 16777522 PHP compilé avec le module API = 20090626 Ces options doivent correspondre à dans Unknown en ligne
Il semble que mon PHP_API_VERSION est 20090626, mais pour une raison quelconque ma DLL pense qu'il est PHP_API_VERSION est 16777522.
Le tutoriel ci-dessous était un peu d'aide dans la compilation d'une dll d'extension: Ayant écrit moi-même, j'ai accès à tout le code source de l'extension php en question - Mais, où est-ce que je contrôle le PHP_API_VERSION qui se retrouve dans la DLL?
Je compile la DLL avec succès avec Borland C++ Builder v5.5, pas Visual Studio.
Voici la source complète, dans le cas où il importe:
// 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);
}
Que puis-je changer pour éliminer l'erreur de démarrage PHP que l'API doit correspondre?