PHP7 wird mit C++-Erweiterungen entwickelt

Windows

Verwenden Sie das Tool [php-sdk-binary-tools], um die DLL-Erweiterung unter Windows zu kompilieren.

php-sdk-binary-tools:GitHub – microsoft/php-sdk-binary-tools: Toolkit zum Erstellen von PHP unter Windows

Kompilierungsprozess:php mb-Erweiterung für Windows 7, php7.4 benutzerdefinierte Erweiterung schreiben für Windows – CSDN-Blog 

 Vorsichtsmaßnahmen:

config.w32-Konfiguration [Kompiliert bei mehreren CPPs]:

ARG_ENABLE('hello', 'hello support', 'yes');

if (PHP_HELLO != 'no') {
	AC_DEFINE('HAVE_HELLO', 1, 'hello support enabled');

}
EXTENSION('hello', 'hello.cpp', null, '/DZEND_ENABLE_STATIC_TSRMLS_CACHE=1');
ADD_SOURCES(configure_module_dirname, "AES.CPP base64.cpp", "hello");
PHP_INSTALL_HEADERS("ext/hello/", "AES.h base64.h");

 Wenn die Bibliothek beteiligt ist, fügen Sie die Header-Datei und die Bibliothek in den Pfad ein. Beim Test wurde festgestellt, dass die statische Bibliothek nicht funktioniert.

C:\Users\dell\Desktop\php\phpdev\vc15\x64\deps

 Suchen Sie dann das Makefile, normalerweise im PHP-Quellcodeverzeichnis, fügen Sie den Namen Ihrer lib-Datei zu LIBS in der Datei hinzu und kompilieren Sie dann.

Löwe

config.m4-Konfiguration [Kompiliert im Fall mehrerer CPP]:

  dnl In case of no dependencies
  PHP_REQUIRE_CXX()
  PHP_SUBST(HELLO_SHARED_LIBADD)
  PHP_ADD_LIBRARY(stdc++, 1, HELLO_SHARED_LIBADD)
  AC_DEFINE(HAVE_HELLO, 1, [ Have hello support ])
  PHP_NEW_EXTENSION(hello, hello.cpp AES.cpp base64.cpp, $ext_shared)
  PHP_INSTALL_HEADERS([ext/hello], [AES.h base64.h])

 Wenn es um die lib-Bibliothek geht, können Sie meinen anderen Artikel lesen:

[Ausgewählt] Rust entwickelt PHP-Erweiterung für die Liunx-Version [Muss abgeholt werden] – CSDN-Blog

 Während der Kompilierung können Fehler auftreten, die Probleme mit dem C++11-Standard betreffen. Ändern Sie wie folgt:

Suchen Sie das Makefile, normalerweise im erweiterten Quellcodeverzeichnis des PHP-Quellcodes:

Suchen Sie die CXX-Variable und fügen Sie danach -std=c++11 hinzu, wie zum Beispiel:

CXX = g++ -std=c++11

おすすめ

転載: blog.csdn.net/weixin_47723549/article/details/134370660