static-php-cli icon indicating copy to clipboard operation
static-php-cli copied to clipboard

How does micro.sfx plus php file not display terminal?

Open KingBes opened this issue 11 months ago • 2 comments

micro.sfx + php文件生成的exe中,如何不显示终端呢? 就像php-win.exe那样

php-win.exe  文件.php

KingBes avatar Mar 01 '24 02:03 KingBes

micro 的 win32 构建模式好像有点问题,我之前尝试过。可能后面有时间再看看了。理论上说编译 micro 的时候加上 --enable-micro-win32=yes 就行,但是不知道为何这个 flag 不生效,可能需要 dixyes 或者其他更了解 win32 API 的人来解答了。

crazywhalecc avatar Mar 01 '24 02:03 crazywhalecc

虽然我不会win32 API,但经过我的的研究已经解决了这个问题!

新建文件 micro_win32.c

#define PHP_MICRO_WIN32_NO_CONSOLE 1  // 设置这个变量是关键
#include "php_micro.c"

修改 config.w32

注释前面的SAPI('micro', 'php_micro.c php_micro_fileinfo.c php_micro_helper.c php_micro_hooks.c', 'micro.exe', '/DZEND_ENABLE_STATIC_TSRMLS_CACHE=1');

if (PHP_MICRO_WIN32 == "yes") {
	SAPI('micro', 'micro_win32.c php_micro_fileinfo.c php_micro_helper.c php_micro_hooks.c', 'micro.exe', '/DZEND_ENABLE_STATIC_TSRMLS_CACHE=1');
	ADD_FLAG("CFLAGS_MICRO", "/D PHP_MICRO_WIN32_NO_CONSOLE");
}else{
	SAPI('micro', 'php_micro.c php_micro_fileinfo.c php_micro_helper.c php_micro_hooks.c', 'micro.exe', '/DZEND_ENABLE_STATIC_TSRMLS_CACHE=1');
}

KingBes avatar Apr 23 '24 02:04 KingBes