diff --git a/build_c_fixed.bat b/build_c_fixed.bat new file mode 100644 index 0000000..e88178b --- /dev/null +++ b/build_c_fixed.bat @@ -0,0 +1,334 @@ +@echo off +title PDF书签合并工具 - C语言版编译 +chcp 65001 >nul + +echo ========================================== +echo PDF书签合并工具 - C语言版编译脚本 +echo ========================================== +echo. + +REM 检查源文件 +set SOURCE_FILES=slide_combine_core.c slide_combine_merger.c slide_combine_gui.c + +for %%f in (%SOURCE_FILES%) do ( + if not exist "%%f" ( + echo ❌ 错误:未找到源文件 %%f + echo 请确保所有源文件都在当前目录下 + pause + exit /b 1 + ) +) + +for %%f in (slide_combine_c.h slide_combine.rc) do ( + if not exist "%%f" ( + echo ❌ 错误:未找到文件 %%f + echo 请确保所有文件都在当前目录下 + pause + exit /b 1 + ) +) + +echo ✅ 所有源文件检查通过 +echo. + +REM 检查编译器 +echo 🔍 检查编译环境... + +set GCC_FOUND=0 +set MINGW_PATH= + +REM 尝试常见的MinGW安装路径 +set PATHS[0]=C:\msys64\mingw64\bin +set PATHS[1]=C:\mingw64\bin +set PATHS[2]=C:\TDM-GCC-64\bin +set PATHS[3]=C:\mingw\bin +set PATHS[4]=C:\devkitPro\devkitPPC\msys\bin + +for /L %%i in (0,1,4) do ( + call set PATH_TO_CHECK=%%PATHS[%%i]%% + if exist "!PATH_TO_CHECK!\gcc.exe" ( + set MINGW_PATH=!PATH_TO_CHECK! + set GCC_FOUND=1 + echo ✅ 找到 GCC 在: !PATH_TO_CHECK! + goto :gcc_found + ) +) + +REM 检查系统PATH +where gcc.exe >nul 2>&1 +if %ERRORLEVEL% equ 0 ( + set GCC_FOUND=1 + echo ✅ 在系统PATH中找到GCC + goto :gcc_found +) + +:gcc_found +if "%GCC_FOUND%"=="0" ( + echo ❌ 错误:未找到GCC编译器 + echo. + echo 请安装以下工具之一: + echo 1. MSYS2:https://www.msys2.org/ + echo 2. MinGW-w64:https://www.mingw-w64.org/ + echo 3. TDM-GCC:https://jmeubank.github.io/tdm-gcc/ + echo. + echo 或者: + echo 使用Visual Studio的开发者命令提示符 + echo. + pause + exit /b 1 +) + +echo ✅ 编译环境检查通过 +echo. + +REM 如果找到MinGW路径,添加到PATH +if defined MINGW_PATH ( + set PATH=%MINGW_PATH%;%PATH% +) + +REM 获取版本信息 +for /f "tokens=1-3 delims=/ " %%a in ('date /t') do set DATE=%%c%%a%%b +for /f "tokens=1-3 delims=:." %%a in ('time /t') do ( + set TIME=%%a%%b + set TIME=!TIME: =0! +) +set VERSION=2.0.0 + +echo 📅 版本信息:%VERSION% (%DATE% %TIME%) +echo. + +REM 清理之前的编译 +echo 🧹 清理之前的编译... +if exist "slide_combine.o" del "slide_combine.o" +if exist "slide_combine.exe" del "slide_combine.exe" +if exist "slide_combine.res" del "slide_combine.res" +if exist "core.o" del "core.o" +if exist "merger.o" del "merger.o" +if exist "gui.o" del "gui.o" +echo ✅ 清理完成 +echo. + +REM 编译资源文件 +echo 🔨 编译资源文件... +windres -i slide_combine.rc -o slide_combine.res +if %ERRORLEVEL% neq 0 ( + echo ⚠️ 资源文件编译失败,继续使用默认图标 + set RES_FILE= +) else ( + echo ✅ 资源文件编译成功 + set RES_FILE=slide_combine.res +) +echo. + +REM 编译C语言程序 +echo 🔨 编译C语言程序... +echo 优化选项:-O2 -static +echo 链接库:user32 gdi32 comctl32 shlwapi ole32 +echo. + +gcc -O2 -mwindows -static ^ + -DUNICODE -D_UNICODE ^ + -Wall ^ + %SOURCE_FILES% ^ + %RES_FILE% ^ + -o slide_combine.exe ^ + -luser32 -lgdi32 -lcomctl32 -lshlwapi -lole32 + +if %ERRORLEVEL% neq 0 ( + echo ❌ GCC编译失败! + echo. + echo 尝试使用Visual Studio编译器... + goto :try_msvc +) + +echo ✅ GCC编译成功! +goto :build_complete + +:try_msvc +echo. +echo 🔨 尝试使用MSVC编译器... + +REM 检查MSVC +where cl.exe >nul 2>&1 +if %ERRORLEVEL% neq 0 ( + echo ❌ 未找到MSVC编译器 + echo. + echo 请安装以下工具之一: + echo - MinGW-w64 (推荐) + echo - Visual Studio 2019/2022 + echo - Visual Studio Build Tools + pause + exit /b 1 +) + +REM MSVC编译 +cl /EHsc /O2 ^ + /DUNICODE /DUNICODE ^ + %SOURCE_FILES% ^ + /link user32.lib gdi32.lib comctl32.lib shlwapi.lib ole32.lib ^ + /OUT:slide_combine.exe + +if %ERRORLEVEL% neq 0 ( + echo ❌ MSVC编译也失败! + pause + exit /b 1 +) + +echo ✅ MSVC编译成功! + +:build_complete +echo. + +REM 检查输出文件 +if not exist "slide_combine.exe" ( + echo ❌ 错误:未找到编译输出文件 + pause + exit /b 1 +) + +REM 获取文件大小 +for %%F in ("slide_combine.exe") do set FILE_SIZE=%%~zF +set /a FILE_SIZE_KB=%FILE_SIZE% / 1024 + +echo 📊 编译统计: +echo 文件大小:%FILE_SIZE_KB% KB +echo 优化级别:O2 +echo 链接方式:静态链接 +echo 编译器:已检测到的编译器 +echo. + +REM 创建发布包 +echo 📦 创建发布包... + +set RELEASE_NAME=SlideCombine_C_v%VERSION%_%DATE% +if exist "%RELEASE_NAME%" rd /s /q "%RELEASE_NAME%" +mkdir "%RELEASE_NAME%" + +REM 复制主程序 +echo 📄 复制主程序... +copy "slide_combine.exe" "%RELEASE_NAME%\" >nul + +REM 创建使用说明 +echo 📝 创建使用说明... +( +echo PDF书签合并工具 v%VERSION% - C语言版 +echo ===================================== +echo. +echo 🎯 C语言版本特色: +echo • 零依赖:纯C语言Win32,无需任何运行时 +echo • 体积小:编译后约 %FILE_SIZE_KB% KB +echo • 性能高:直接编译为机器码 +echo • 兼容强:Windows 7-11 完全支持 +echo • 绿色软件:复制即用,无任何安装 +echo. +echo 💻 系统要求: +echo ✅ Windows 7 SP1 或更高版本 +echo ✅ Windows 8/8.1 +echo ✅ Windows 10/11 +echo ✅ 无需安装任何运行时库 +echo. +echo 🚀 使用方法: +echo 1. 双击运行 slide_combine.exe +echo 2. 选择三个路径: +echo • PDF文件夹路径:包含 FreePic2Pdf_bkmk.txt 文件的文件夹 +echo • TXT源文件路径:包含元数据 TXT 文件的路径 +echo • 输出路径:合并后文件的保存位置 +echo 3. 点击"🚀 开始合并"按钮 +echo 4. 查看实时处理日志 +echo 5. 等待处理完成 +echo. +echo 📁 示例目录结构: +echo PDF文件夹/ +echo ├─ CH-875 1-3/FreePic2Pdf_bkmk.txt +echo ├─ CH-875 4-6/FreePic2Pdf_bkmk.txt +echo. +echo TXT源文件/ +echo ├─ CH-875 1-3.txt +echo ├─ CH-875 4-6.txt +echo. +echo 输出路径/ +echo └─ CH-875.txt ^(合并后的文件^) +echo. +echo 🌟 技术特点: +echo • 🚀 零依赖:纯C语言,无任何外部库 +echo • 📦 极小体积:%FILE_SIZE_KB% KB 绿色软件 +echo • ⚡ 高性能:直接编译,启动迅速 +echo • 🎯 智能排序:按数字大小正确排序文件 +echo • 🔒 安全可靠:开源代码,无后门 +echo • 🌍 多编码:自动检测 UTF-8、GBK、GB2312 +echo • 📊 实时日志:详细显示处理进度 +echo. +echo 📋 版本信息: +echo • 程序版本:v%VERSION% +echo • 构建日期:%DATE% +echo • 开发语言:C语言 + Win32 API +echo • 文件大小:%FILE_SIZE_KB% KB +echo • 支持系统:Windows 7-11 +echo • 许可证:MIT开源 +echo. +echo 🎉 享受超高速、零依赖的PDF书签合并体验! +) > "%RELEASE_NAME%\C语言版使用说明.txt" + +REM 创建启动脚本 +echo 🚀 创建启动脚本... +( +echo @echo off +echo title PDF书签合并工具 v%VERSION% +echo echo 启动 PDF书签合并工具... +echo echo C语言零依赖版本 +echo echo 文件大小:%FILE_SIZE_KB% KB +echo echo. +echo. +echo if exist "slide_combine.exe" ^( +echo echo ✅ 程序已启动 - C语言零依赖版本 +echo start "" "slide_combine.exe" +echo ^) else ^( +echo echo ❌ 错误:未找到 slide_combine.exe +echo echo 请确保在正确的目录中运行此脚本 +echo pause +echo ^) +echo. +echo timeout /t 2 ^>nul +) > "%RELEASE_NAME%\启动程序.bat" + +echo. +echo ========================================== +echo 🎉 C语言版编译完成 +echo ========================================== +echo ✅ 编译状态:成功 +echo 📦 发布包名称:%RELEASE_NAME% +echo 💾 主程序大小:%FILE_SIZE_KB% KB +echo 🎯 语言版本:C语言 + Win32 API +echo 🔗 链接方式:静态链接 +echo 📁 发布包位置:%CD%\%RELEASE_NAME%\ +echo ⚡ 发布包内容: +echo ├─ slide_combine.exe ^(主程序,%FILE_SIZE_KB% KB^) +echo ├─ C语言版使用说明.txt ^(详细指南^) +echo └─ 启动程序.bat ^(快捷启动^) +echo. +echo 🌟 C语言版本优势: +echo • ✅ 绝对零依赖:无需任何运行时 +echo • ✅ 极小体积:%FILE_SIZE_KB% KB 绿色软件 +echo • ✅ 超高性能:直接编译为机器码 +echo • ✅ 完美兼容:Windows 7-11 原生支持 +echo • ✅ 安全可靠:开源C语言代码 +echo • ✅ 启动迅速:无虚拟机开销 +echo • ✅ 内存占用:极低的资源使用 +echo. +echo 🎯 部署说明: +echo 1. 将整个 %RELEASE_NAME% 文件夹复制到任意电脑 +echo 2. 直接运行 slide_combine.exe +echo 3. 无需安装任何软件,真正的零依赖绿色软件! +echo. + +REM 询问是否打开发布文件夹 +echo 是否打开发布文件夹?(Y/N) +set /p choice=请输入选择: +if /i "%choice%"=="Y" ( + start "" "%RELEASE_NAME%" + echo ✅ 已打开发布文件夹 +) + +echo. +echo 🎉 C语言版编译发布完成!按任意键退出... +pause >nul \ No newline at end of file