私は窓にPHPの拡張機能の開発に新しいですし、それを学ぶためにこの連載以下: - https://jojokahanding.wordpress.com/2014/05/26/writing-php-extensions-for-windowswriting-the-extension/エラー「zif_test_addme」:宣言されていない識別子 - PHP拡張モジュールの開発
私は正常で拡張機能開発のためのコンパイル環境を構築しました以下はthis articleです。それはうまくいっていた。しかし、私はそれに2つの数値を追加する関数を書いて、それを構築しようとしました。
'zif_test_addme': undeclared identifier
11行のコードである: - - :
PHP_FE(test_addme,NULL)
私はこのエラーを取得していますなぜそれがphpTestModule.phpで11行目で、このエラーは私を投げますか?
私はGoogleで検索し、PHPのWebサイトからthisを発見し、ZEND_FEによってPHP_FEを交換し、ZEND_FE_ENDことによってそれを終了しようとしています。しかし、それも動作していないと私は同じエラーが発生してしまう。 Plzヘルプ。
PS: - 私は拡張機能を構築するためにのVisual Studio 2017とPHP 7.0.22を使用していますし、私のシステムが64ビットです。
コードスニペット: -
phpTestModule.cpp
// phpTestModule.cpp : Defines the exported functions for the DLL
application.
//
#include "stdafx.h"
#define PHP_TEST_EXTNAME "test"
#define PHP_TEST_VERSION "1.0.30"
zend_function_entry test_functions[] = {
PHP_FE(test_addme,NULL)
{NULL,NULL,NULL}
};
zend_module_entry test_module_entry = {
#if ZEND_MODULE_API_NO>=20010901
STANDARD_MODULE_HEADER,
#endif
PHP_TEST_EXTNAME,
test_functions,
NULL,
NULL,
NULL,
NULL,
NULL,
#if ZEND_MODULE_API_NO>=20010901
PHP_TEST_VERSION,
#endif
STANDARD_MODULE_PROPERTIES
};
ZEND_GET_MODULE(test);
PHP_FUNCTION(test_addme)
{
long paramOne;
long paramTwo;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", ¶mOne, ¶mTwo) == FAILURE)
{
RETURN_FALSE;
}
RETURN_LONG(paramOne + paramTwo);
}
stdafx.hを
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#pragma once
#include "targetver.h"
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
// Windows Header Files:
#include <windows.h>
#ifdef _DEBUG
#define ZEND_DEBUG 1
#else
#define ZEND_DEBUG 0
#endif
#define ZTS 1
#define ZEND_WIN32 1
#define PHP_WIN32 1
#include<math.h>
#include<wchar.h>
#include<io.h>
#include<php.h>
#pragma comment(lib,"php7ts.lib")
// TODO: reference additional headers your program requires here
ありがとうございました。それは今働いている。 –