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

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

Jun 22, 2021 am 09:18 AM

この記事では、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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)