2016-05-17 14 views
0

ExternalObject関数で読み込むExtendScript DLLライブラリを作成しようとしています。64ビットウィンドウ上のAdobe ExtendScript ExternalObject

32ビットのInDesignバージョンではうまくいきます。しかし、Windows上のInDesign CCの64ビット版では読み込みに失敗します。

設定ExternalObject.log = trueは「ExtObj: load error!」というメッセージになります。

は、私も実行するためのサンプル・プロジェクト「 BasicExternalObject」と「 SampleLib」を取得しようとしていると、それらのランニングを得ることができません。

私はVisual Studio 2015 Community Editionを実行しています。

ありがとうございます。

答えて

0

Visual Studioでは、x64プラットフォーム用にコンパイルしてビルドする必要があります。これを行うには、Visual Studioのメインメニューバーのドロップダウンに移動し、x64を選択します。もちろん

Main menu bar in Visual Studio Express 2012 showing platform choice dropdown

、あなたのプロジェクトのプロパティは、x64プラットフォーム用に正しく設定されていることを確認する必要があります。 "Solution Explorer"パネルでプロジェクト名を右クリックし、 "Properties ..."をクリックすると、そのことができます。ダイアログが表示されたら、上部のドロップダウンがx64に設定されていることを確認します。

enter image description here

+0

感謝。私は実際にそれを試してみましたが、成功していませんでした(サンプルプログラムに付属のプロジェクトにx64プラットフォームを追加する必要がありました)。 これを成功させていただければ、サンプルプロジェクトファイルを送っていただけますか?私の設定を比較しますか? – bwflyer

0

私はこの問題を解決することができました。それは問題の組み合わせだった。

  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); 
    
関連する問題