我正在尝试创建一个ExtendScript DLL库来加载ExternalObject
函数。
适用于32位的InDesign版本。但是在Windows上的64位版本的InDesign CC上无法加载。
设置ExternalObject.log = true
只会产生“ExtObj: load error!
”消息。
我试图让示例项目“ BasicExternalObject ”和“ SampleLib ”运行,但无法运行。
我正在运行Visual Studio 2015社区版。
提前感谢任何指针。
答案 0 :(得分:0)
在Visual Studio中,您需要为x64平台编译和构建。您可以通过转到Visual Studio主菜单栏下的下拉列表并选择x64来完成此操作。
当然,您需要确保为x64平台正确设置了项目属性。您可以通过在"解决方案资源管理器"中右键单击项目名称来实现。面板,然后单击"属性..."对话框出现时,请确保顶部的下拉菜单设置为x64。
答案 1 :(得分:0)
我能够解决这个问题。这是一系列问题。
需要拥有适用于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);