You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Visual C++中静态编译Ghostscript?需修改msvc.mak哪些内容?

嘿,我来一步步帮你搞定在Visual C++环境下静态编译Ghostscript的操作,还有msvc.mak文件的关键修改点——这些都是我实际折腾过的经验,靠谱得很:

在Visual C++中静态编译Ghostscript的完整步骤

前期准备

  • 先确保你装了带C++工具链的Visual Studio,还有拿到Ghostscript的稳定版源码包(建议选9.x系列,新版配置可能有变动)
  • 打开对应架构的VS命令提示符(比如要编译64位就选「x64 Native Tools Command Prompt for VS」),然后切换到Ghostscript源码的根目录
对msvc.mak文件的核心修改

这部分是静态编译的关键,一定要改对:

  • 切换CRT链接模式:找到文件里的LINKFLAGS配置行,把动态链接的/MD改成静态链接的/MT;如果是编译Debug版本,就改成/MTd。比如原来的代码:
    LINKFLAGS = /nologo /MD
    
    改成:
    LINKFLAGS = /nologo /MT
    
  • 禁用动态库构建:找到定义BUILD_SHARED的地方,把它的值从1改成0,直接注释掉也行——这会告诉编译脚本不要生成动态dll,只做静态库
  • 指定静态依赖库:检查LIBS部分的依赖项,把所有动态版的依赖库(比如zlib.lib)换成对应的静态版本(比如zlibstatic.lib),确保所有依赖都用静态链接
  • 移除导出符号宏:找到GS_EXPORT这类导出相关的宏定义,把它改成空值。比如原来的#define GS_EXPORT __declspec(dllexport),改成#define GS_EXPORT——静态编译不需要导出符号,留着反而会出问题
执行编译
  • 在VS命令提示符里,直接运行:
    nmake -f msvc.mak
    
    要是想编译Debug版本,就加个参数:
    nmake -f msvc.mak DEBUG=1
    
  • 等编译跑完,成功的话会在obj或bin目录下生成静态链接的gs.lib,还有不需要依赖dll的可执行文件(比如gswin64c.exe)
小提醒
  • 如果编译时碰到依赖缺失的错误,先确认zlib、libpng这些自带的子依赖已经用静态模式编译好了,或者在msvc.mak里指定了正确的静态库路径
  • 可以把生成的可执行文件单独拷到空文件夹里运行,要是能正常启动,就说明静态编译成功了(动态版的话会提示缺dll)

内容的提问来源于stack exchange,提问作者Jesús Inclán Blanco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:42:06