【问题标题】:Adobe ExtendScript ExternalObject on 64 bit windows64 位窗口上的 Adob​​e ExtendScript ExternalObject
【发布时间】:2016-05-17 01:55:01
【问题描述】:

我正在尝试创建一个 ExtendScript DLL 库以使用 ExternalObject 函数加载。

它适用于 32 位的 InDesign 版本。但是,在 Windows 上的 64 位版本的 InDesign CC 上,它无法加载。

设置ExternalObject.log = true 只会产生“ExtObj: load error!”消息。

我什至试图让示例项目“BasicExternalObject”和“SampleLib”运行,但无法让它们运行。

我正在运行 Visual Studio 2015 社区版。

提前感谢您的任何指点。

【问题讨论】:

    标签: adobe-indesign extendscript


    【解决方案1】:

    我能够解决这个问题。这是一个问题的组合。

    1. 确保所有包含的库都使用相同的库编译器设置进行编译。我使用了多线程静态。
    2. 请参阅第 1 项 - 确保您没有任何需要安装 VS 2015 运行时库的依赖问题。
    3. 需要有适用于 x64 的 DLL 版本。 ExtendScript 代码需要检测该环境并加载正确的版本。

      var isWin = (File.fs == "Windows");
      var libFilename = (isWin) ? "HttpLib.dll" : "HttpLib.framework";
      
      if (isWin && ($.os.indexOf("64") > 0)) {
          // we're on a 64 bit OS - see if the program path is in the 64 bit path
          if (app.filePath.fsName.indexOf("x86") == -1)  { // looks like we're 64 bit then
               libFilename = "HttpLib64.dll";
          }
       }
      
    4. 在加载前使用“.fsName” - 它在路径中有空格的目录上失败。

      var libPath = File($.fileName).parent.fsName + "/" + libFilename;   
      var httpLib = new ExternalObject("lib:" + libPath);
      

    【讨论】:

    • 这为我解决了这个问题。很高兴你发布了这个!关于这个主题的宝贵文档很少。
    【解决方案2】:

    在 Visual Studio 中,您需要针对 x64 平台进行编译和构建。您可以通过转到 Visual Studio 主菜单栏下的下拉菜单并选择 x64 来执行此操作。

    当然,您需要确保为 x64 平台正确设置项目属性。您可以通过在“解决方案资源管理器”面板中右键单击您的项目名称,然后单击“属性...”来做到这一点。当对话框出现时,确保顶部的下拉菜单设置为 x64。

    【讨论】:

    • 感谢您的回复。我实际上已经尝试过了,但没有任何成功(我必须将 x64 平台添加到示例程序附带的项目中。如果您成功执行此操作,您是否介意向我发送示例项目文件,以便我进行比较我的设置?
    猜你喜欢
    • 1970-01-01
    • 2014-04-28
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-04
    相关资源
    最近更新 更多