質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
After Effects

After Effectsはビジュアルエフェクトとモーショングラフィックスを実現する映像制作・合成ソフトウェアです。通常のGUI操作に加え、JavaScriptを利用したスクリプト制御により多彩な機能の拡張を行うことができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

3474閲覧

AfterEffects CS6でスクリプトから自作のDLLを参照する方法があるかどうか

tanaka1

総合スコア18

After Effects

After Effectsはビジュアルエフェクトとモーショングラフィックスを実現する映像制作・合成ソフトウェアです。通常のGUI操作に加え、JavaScriptを利用したスクリプト制御により多彩な機能の拡張を行うことができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

2クリップ

投稿2017/11/22 06:41

編集2017/12/06 01:46

###前提・実現したいこと

 自作のDLLをJSX(adobe after effects CS6)側から参照したいのですが、  そもそも可能なのかどうかが知りたいです。

###発生している問題・エラーメッセージ

 ExternalObjectを実行したタイミングで例外「IOError: I/O エラー」が発生。  ※ファイルパス自体は通っている事は確認済みです。   通っていなければ別のエラーメッセージが出ることも確認

###該当のソースコード

JSX

1{ 2 var DLL_PATH = "C:/_work/"; 3 var FILE_NAME = "dllTest.dll" 4 5 try { 6 var dll = new ExternalObject('lib:' + DLL_PATH + FILE_NAME); 7 8 alert(dll.version); 9 10 dll.terminate(); //解放 11 12 } catch (e) { 13 alert(e); 14 } 15 16}

dllTest.cpp

1#include <windows.h> 2#include "dllTest.h" 3 4int WINAPI DllMain(HINSTANCE hInst, DWORD fdwReason, PVOID pvReserved) 5{ 6 return TRUE; 7} 8 9EXPORT BOOL CALLBACK TestMethod(char* msg) 10{ 11 memcpy(msg, "Test Message", 12); 12 return TRUE; 13} 14

dllTest.h

1#define EXPORT extern "C" __declspec(dllexport) 2 3EXPORT BOOL CALLBACK TestMethod(char* msg);

###試したこと
・dllファイル側を64bit、32bitのそれぞれでコンパイルした物を使用しても結果は変わらず。
・作成したdll自体が機能するかどうかはサンプルexe作成して問題無い事は確認済み。
・ExternalObjectが使えないかどうか試す為、以下を実行した際に正常に値が取れる事は確認済み。
⇒ var dll = new ExternalObject('lib:AdobeXMPScript');

###補足情報(言語/FW/ツール等のバージョンなど)
Adobe After Effects CS6
Visual Studio 2013

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

.jsx(ExtendScript, Adobe製品向けJavaScript実装)の基本オブジェクトについては
ExtendScript Toolkit CC という開発環境をインストールすれば、
ドキュメントやサンプルが得られます。
http://www.adobe.com/jp/products/extendscript-toolkit.html

これのドキュメント
C:\Program Files (x86)\Adobe\Adobe ExtendScript Toolkit CC\SDK\JavaScript Tools Guide CC.pdf
によると、.jsx からアクセスする .dll は、最低でも以下の関数を実装している必要があるようです。
ESInitialize()
ESGetVersion()
ESFreeMem()
ESTerminate()

実装例については
C:\Program Files (x86)\Adobe\Adobe ExtendScript Toolkit CC\SDK\Samples
のサンプルを見れば良いでしょう。

また .jsx を実行するホストアプリ(AECS6)が64bitの場合、
.dll も64bitである必要があるようです。

ちなみに .dll ではなく.exeならば、代わりに system.callSystem("xxx.exe ...")
を使う方法もあります。

投稿2018/04/18 11:59

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問