検索
ホームページバックエンド開発PHP7VS2015 (vs14) で PHP7 拡張機能を開発する方法

この記事では、VS2015 (vs14) を使用して PHP7 拡張機能を開発する方法を紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。

VS2015 (vs14) で PHP7 拡張機能を開発する方法

開発前の準備作業:

VS (私は2013を使用)

Cygwin (ダウンロードアドレス: http://www.cygwin) .com/)

IIS7.5 の PHP 実行環境 (テストに使用)

php コンパイル済みプログラムとプリコンパイル済みソース コードを備えており、最新バージョン 7.0.5 (ダウンロード アドレス: http://windows.php.net/download#php-7.0)

コンパイルされたプログラムのパス: E:\vs_c \test\phpext\php-7.0.5-src

コンパイル前のソース コード パス: E:\vs_c \test\phpext\php-7.0.5-nts-Win32-VC14-x86\

手順:

1. Cygwin をインストールします

VS2015 (vs14) で PHP7 拡張機能を開発する方法

ネットワークからインストール

VS2015 (vs14) で PHP7 拡張機能を開発する方法

##C ドライブはデフォルトでインストールされます

VS2015 (vs14) で PHP7 拡張機能を開発する方法

キャッシュはご自由にダウンロードしてください。インストール後は忘れずに削除してください。私はデスクトップに置きました。

VS2015 (vs14) で PHP7 拡張機能を開発する方法

VS2015 (vs14) で PHP7 拡張機能を開発する方法

中国では、 http://mirrors.163.com を選択し、次のステップを最後まで実行してください。

2. 私の php ソース コード ディレクトリ (E:\vs_c \test\phpext\php-7.0.5-src、これは以下でソース コード ディレクトリを表すために使用されます) を見つけて、E を開きます。 \vs_c \test\phpext \php-7.0.5-src\ext\ext_skel_win32.php

VS2015 (vs14) で PHP7 拡張機能を開発する方法

これを cygwin のインストール ディレクトリに変更します。私のディレクトリは C ドライブなので、変更する必要はありません。

3. cmd を実行し、「E:\vs_c \test\phpext\php-7.0.5-src\ext\」と入力し、php.exe ext_skel_win32.php --extname=test を実行します。ここで、test は php を表します。拡大。

VS2015 (vs14) で PHP7 拡張機能を開発する方法

E:\vs_c \test\phpext\php-7.0.5-src\ext を開くと、テスト フォルダーが表示されます。これが拡張機能です。

4. VS を開き、[ファイル] - [新規] - [既存のコードからディレクトリを作成] を選択します。

VS2015 (vs14) で PHP7 拡張機能を開発する方法

C を選択します

VS2015 (vs14) で PHP7 拡張機能を開発する方法

ここで php 拡張機能フォルダーのパスを選択し、プロジェクトに名前を付けます

VS2015 (vs14) で PHP7 拡張機能を開発する方法

「Visual Studio を使用する」を選択し、プロジェクトの種類「ダイナミック リンク ライブラリ」を選択します。 (DLL) プロジェクト」は、完了するまでデフォルトで次のステップに進みます。

VS2015 (vs14) で PHP7 拡張機能を開発する方法

#5. 初めて開くとエラーがたくさん出てきますので、プロジェクトの設定を始めましょう。

VS2015 (vs14) で PHP7 拡張機能を開発する方法

まず、プロジェクト ソリューション構成をリリースに変更します。

VS2015 (vs14) で PHP7 拡張機能を開発する方法

プロジェクト プロパティを右クリックし、[C/C]、[全般] の順にクリックします。 、追加のインクルード ディレクトリ、

VS2015 (vs14) で PHP7 拡張機能を開発する方法

# を編集し、次の PHP ソース ディレクトリを追加します (実際のディレクトリは開発者自身のディレクトリに従います):

E: \vs_c \test\phpext\php-7.0.5-src

E:\vs_c \test\phpext\php-7.0.5-src\main

E:\vs_c \test \phpext\ php-7.0.5-src\TSRM

E:\vs_c \test\phpext\php-7.0.5-src\Zend

プロジェクト プロパティを右クリックし、C/ C、プリプロセッサ、プリプロセッサ定義を編集し、次の変数を追加します:

ZEND_DEBUG=0

PHP_EXTENSION

PHP_WIN32

ZEND_WIN32

HAVE_

TEST=1 (赤い部分は拡張機能名に変更する必要があります。拡張機能名に変更しないとphpが認識しません)

COMPILE_DL_

TEST (ここの赤い部分は拡張機能名に変更する必要があります。拡張機能名に変更しないと PHP が認識しません)

ZTS (この変数を追加するとスレッド セーフがオンになり、追加しないとスレッド セーフがオフになります。この変数を追加するかどうかは、コンパイルした PHP がスレッド セーフであるかどうかに基づいて判断できます。 ps: 応答せずに損失を被りました。 .PHP は拡張子を認識しません)

VS2015 (vs14) で PHP7 拡張機能を開発する方法

ソリューションを生成します。エラー メッセージには、「config.w32.h」が見つからないことが示されます。「config.w32.h」を検索します。 h" をソース コード ファイル ディレクトリに移動し、E:\vs_c \test\phpext\php-7.0.5-src\win32\build\ フォルダーで "config.w32.h.in" を見つけてコピーします。ファイルを E:\vs_c \test \phpext\php-7.0.5-src\main\ フォルダーにコピーし、次の ".in"

ソリューションを再度生成すると、エラー メッセージ LNK1120

# が表示されます。 ##エラー 7 エラー LNK1120: 5 つの未解決の外部コマンド E:\vs_c \test\phpext\php-7.0.5-src\ext\test\Release\phptest.dll 1 1 phptest

プロジェクトを右クリックプロパティ、コネクタ、入力、追加の依存関係、編集、php5.lib へのパスを入力します (このファイルは、php がコンパイルされた後のプログラム フォルダー、ルート ディレクトリの dev フォルダーにあります)

注: 順序は次のとおりです。拡張機能が php で動作できるようにするため、一致する実行環境は、php 実行環境のコンパイル済みバージョン (php7.0.5 は VC14 によってコンパイルされています) によって異なります。これは、E:\vs_c\test\phpext\php-7.0 の設定です。 .5-src\main\ フォルダー。w32.h ファイルに追加します:

#define PHP_COMPILER_ID "VC14"

Open E:\vs_c \test\phpext\php-7.0.5-src\ext\test\test.c


この段落を検索します。 コード:

PHP_FUNCTION(confirm_test_compiled)
{
    char *arg = NULL;
    int arg_len, len;
    char *strg;

    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) {
        return;
    }

    len = spprintf(&strg, 0, "Congratulations! You have successfully modified ext/%.78s/config.m4. Module %.78s is now compiled into PHP.", "test", arg);
    RETURN_STRINGL(strg, len, 0);
}

確認_test_compiled を test_echo に変更します。

このコードを再度検索します:

const zend_function_entry test_functions[] = {
    PHP_FE(confirm_test_compiled,    NULL)        /* For testing, remove later. */
    PHP_FE_END    /* Must be the last line in test_functions[] */
};

内部の確認_test_compiled を test_echo に変更します


ソリューションを生成するには、プロジェクト ルート ディレクトリの Release フォルダーで独自の php 拡張機能 phptest.dll を見つけ、それを php の ext フォルダーにコピーし、php.ini で構成します。

extension=phptest.dll

IIS を再起動し、新しいサイトを作成し、その中に新しい test.php ファイルを作成します

<?php 
echo test_echo("123");

実行して結果を取得します:

VS2015 (vs14) で PHP7 拡張機能を開発する方法##この test_echo 関数は独自のカスタム関数であり、必要に応じて独自の拡張機能を開発して PHP のパフォーマンスを向上させることもできます。

推奨学習:

php ビデオ チュートリアル

以上がVS2015 (vs14) で PHP7 拡張機能を開発する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はCSDNで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター