2012-02-07 9 views
1

CreateProcessを使用してプラグインをロードしているアプリケーション(InDesign)を起動すると、プラグインのDLLをロードできないため、プラグインがロードされません。奇妙なことは、アプリケーションをダブルクリックするかコマンドラインから開くと、プラグインが正常に読み込まれるということです。CreateProcessとコマンドラインとDLLが見つかりません

CreateProcessを呼び出す私のアプリケーションはかなり大きく、いくつかのDLLは私のプラグインでも使われています。私はそれを読み込まないDLLに絞り込んだ。私はロードを遅らせるように設定しましたが、プラグインはロードされますが、呼び出すとそのDLLはロードされません。

私はアプリケーションのPATHをチェックアウトしてコマンドラインから開くときと同じであることを確認するために "Process Explorer"を使用しました。問題のDLLへのパスはPATH envにあります。これは、正常にロードされる他のDLLと同じです。

私はプラグインの有無にかかわらず、これまでに何も見たことがない多くの異なるアプリを起動します。

何が起こっているのでしょうか?

おっと...

まあ、私はそれがアプリケーション(InDesignの)が発足した方法に応じて異なっていた、のenv PATHについて間違っていました。 QuickTimeは私のアプリケーションのPATHを変更し、一番上に "Apple Application Support"というフォルダを置いているようです。そのフォルダの中に、私が使用しているのと同じ名前のDLL、つまりlibxml2.dllがあります。 LoadLibraryを使用してプラグインにlibxml2.dllをロードすると、msvcr80.dllが見つかりません。シッシュ。アプリケーションおよび/またはプラグインをロードするときに気晴らしのために申し訳ありません

...

+0

ShellExecuteWを使用してみましたか? –

+0

はい、私はShellExecuteEx、システム、およびCreateProcessをすべて同じ結果を試しました。 – dougnorton

答えて

0

は、ワーキングパスを確認してください。エクスプローラとコマンドプロンプトではこれを明示的に設定していますが、別のアプリケーションではCreateProcess()を呼び出すことはできません。

+0

私は言及を忘れた...私はCreateProcessとトラブルDLLを使用する小さなアプリケーションを作成しました。この小さなアプリケーションから、私はアプリケーション(InDesign)を起動することができ、プラグインは正常に読み込まれます。 – dougnorton

関連する問題