【问题标题】:Where to get a thread-safe Ghostscript compilation?从哪里获得线程安全的 Ghostscript 编译?
【发布时间】:2013-02-26 00:53:19
【问题描述】:

新版本的 Ghostscript (9.07) 支持线程(可以是线程安全的),但它说必须使用特殊标志编译代码才能启用此功能。

我该怎么做?或者我在哪里可以获得已经构建的线程安全版本?

我尝试下载源代码,在 VS 中打开,但构建失败。所以也许有人已经这样做了并且可以共享 DLL。

【问题讨论】:

    标签: c# ghostscript


    【解决方案1】:

    您是否对 Ghostscript 的线程安全版本或多渲染线程感兴趣?

    只有在生成高分辨率输出时才使用多个渲染线程,因为代码必须首先解释 PostScript 程序(或 PDF 文件)并创建一个显示列表供渲染线程操作。除非您渲染到相当高的分辨率,否则这实际上会比使用页面模式(在内存中渲染整个页面)慢

    您可以使用 -dNumRenderingThreads 开关在 Ghostscript 的预构建版本中创建多个渲染线程。

    如果您想要一个线程安全的 Ghostscript 版本,那么您需要能够自己编译 Ghostscript。您使用的是什么版本的 Visual Studio?我正在使用 Visual Studio 2005 和 2008,并且提供的解决方案适用于我(经过适当的转换)。

    【讨论】:

    • 我需要一个 VS 2012 的线程安全编译,这样我就可以同时从多个线程初始化多个 Ghostscript 实例。我相信编译后的 DLL 将从 VS 2005/2008 开始工作,所以如果你能分享它,那将非常有帮助,因为我不知道如何使用自定义标志正确编译 C 代码。
    • 我没有带有标志集的预构建 DLL,您必须自己制作。您可以获得 VS 2010 express 的副本,它将构建提供的项目。要设置标志,只需在解决方案资源管理器中右键单击解决方案名称,从下拉菜单中选择“属性”。然后从属性页中选择 C/C++,单击小箭头,出现选项,选择“预处理器”,然后在显示“预处理器定义”的右侧窗格中添加 THREADSAFE 标志。
    • 不幸的是,它也未能在 VS 2010 中构建。
    • 你可以在bugs.ghostscript.com打开一个错误报告,请记住描述失败,'fails to build'没有多大帮助。
    【解决方案2】:

    我也在寻找这个问题的解决方案,最终我在 Linux 中解决了它。也许它会帮助来这里寻找解决方案的人。 在源目录中打开终端并输入以下命令:

    ./configure --enable-threadsafe
    

    之后,您可以为 lib 执行 makemake so。 以下是从源代码构建 ghostscript 的文档链接:https://www.ghostscript.com/doc/9.23/Make.htm#Makefile_overview

    【讨论】:

      【解决方案3】:

      查看Ghostscript.NET 托管的 Ghostscript 包装器,如果您需要同时处理多个 pdf,它允许您同时运行多个 Ghostscript 库实例。

      【讨论】:

        猜你喜欢
        • 2011-01-09
        • 2020-05-01
        • 2012-06-09
        • 2011-12-22
        • 2023-04-04
        • 2011-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多