在64位窗口上的Adobe ExtendScript ExternalObject
问题描述:
我试图创建一个ExtendScript DLL库来加载ExternalObject
函数。在64位窗口上的Adobe ExtendScript ExternalObject
它适用于32位InDesign版本。但是,Windows上的64位版本InDesign CC无法加载。
设置ExternalObject.log = true
仅导致“ExtObj: load error!
”消息。
我想即使拿到样本项目“BasicExternalObject”和“SampleLib”运行并不能获得那些运行。
我正在运行Visual Studio 2015社区版。
在此先感谢任何指针。
答
我能解决这个问题。这是问题的组合。
- 确保所有包含的库都使用相同的库编译器设置编译。我使用多线程静态。
- 请参阅第1项 - 确保您没有任何需要安装VS 2015运行时库的相关性问题。
-
需要为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"; } }
-
在加载前使用“.fsName” - 它在路径中有空格的目录上失败。
var libPath = File($.fileName).parent.fsName + "/" + libFilename; var httpLib = new ExternalObject("lib:" + libPath);
感谢您的回复。我已经尝试过,并没有取得任何成功(我必须将x64平台添加到示例程序附带的项目中。 如果您已经成功完成此操作,请介绍给我一个示例项目文件,以便我可以比较我的设置? – bwflyer