2

私は、クロスプラットフォームになるストップモーションプログラムのコーディングを手伝っています.Windowsではうまく機能します. 知らない人のために説明すると、ストップ モーションは単なるアニメーションの派手な用語です。このプログラムを使用すると、ニコン、キャノン、および Web カメラをコンピューターに接続し、プログラムにシーンのライブ ビューを表示させ、そこからカメラを手動で制御することができます。含まれているのは、カメラ用の canon のフレームワーク ファイルで、次のようにパスが定義されています。

import com.sun.jna.Native;
initialization and such

public static EdSdkLibrary EDSDK = (EdSdkLibrary) Native.loadLibrary("Macintosh/EDSDK.framework/EDSDK",EdSdkLibrary.class, options);

「public static int...」で画像が見つからないというエラーがスローされます。パスを再定義し、フレームワークを移動し、使用しているものと同じ他のさまざまなフレームワークを使用することを何度も試みました。これは Windows では問題なく動作しますが、Mac では問題があることに注意してください。

フレームワークは Mac で異なりますか、それとも異なる方法で定義されますか? 私は他の解決策を見ましたが、見つかりませんでした。

編集:さて、私はパスを定義しました。現在、この記号があり、横にテキストはありません。私は今何をしますか?

編集: この % はコマンドではないと言っています。それがなければ、まだ機能しません。

4

2 に答える 2

3

JNA は、コア フレームワーク名 (この場合は ESDDK) に基づいて、~/Library/Frameworks、/Library/Frameworks、および /System/Library/Frameworks からフレームワークをロードしようとします。

loadLibrary呼び出しが成功した場合、ライブラリが見つかりました。ライブラリが見つからない場合は、UnsatisfiedLinkError.

フレームワークは基本的に、共有ライブラリと他のリソースのバンドルです。ESDK.framework/ESDK は実際の共有ライブラリです (フレームワークの場合、OSX では、OSX の共有ライブラリに通常見られる「dyld」サフィックスが省略されています)。

編集

パスが JNA の期待どおりになるようにシンボリック リンクを作成する方法を次に示します。端末から (Terminal.app を実行):

% ln -s /your/complete/path/to/Macintosh/EDSDK.framework ~/Library/Frameworks/EDSDK.framework

これが正常に完了すると、シンボリック リンクを一覧表示 (ls) すると次のように表示されます。

% ls -l ~/Library/Frameworks/EDSDK.framework
lrwxrwxr-x  1 YOU  YOU  50 Mar 31 01:13 /Users/YOU/Library/Frameworks/EDSDK.framework -> /your/complete/path/to/Macintosh/EDSDK/Framework/EDSDK.framework

左側にシンボリック リンク パス (JNA が参照する場所) が表示され、右側に実際のファイルへのパスが表示されます。そうでない場合は、symlink ファイルを削除して、もう一度やり直してください。~/Library/Frameworks最初にディレクトリを作成する必要がある場合があることに注意してください。まだ存在していない可能性があります。

最後に、ロードしようとしているライブラリが、ロードしようとしている VM と一致していることを確認してください。64 ビットと 64 ビット、32 ビットと 32 ビット。Canon はライブラリのユニバーサル バイナリを提供していないため、どちらかを指定するか、.xml を使用して 2 つをマージする必要がありますlipo

于 2013-03-29T14:22:27.027 に答える