2012-03-02 22 views
2

Visual Studio 2005 SP1を使用して以前に32ビットWinXPで使用されていたold visual studio project(cuSVMプロジェクト) 。私は64ビットWin7でそれを実行したい。 Visual Studio 2008を使用して64ビットモードでコンパイルしましたが、DLLが不足しているために実行できません。無効なMEX(指定されたプロシージャが見つかりませんでした):Visual StudioでCUDA MEX関数を作成し、MATLABで呼び出す

私は、DLL秒であった行方不明、 "依存関係ウォーカー" 使用:

  • MSVCR80.DLL
  • MSVCR90D.DLL
  • IESHIMS.DLL

言う黄色の疑問符付き: "システムは、指定されたファイルを見つけることができません"。

DLL-tree私は "c:\ windows \ system32 \ NVCUDA.DLL"に赤い "NVCUDA.DLL"を、赤いブロックに "IEFRAME.DLL"、 "c:\ windows \ system32 \ IEFRAME。 DLL "をこのファイルサブツリーに追加します。

とエラーメッセージ:

します。C:\ Program Files(x86の)\マイクロソフト

 
Error: At least one required implicit or forwarded dependency was not found. 
Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module. 
Warning: At least one delay-load dependency module was not found. 
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module. 

は、次は私が "MSVCR80.DLL" とVisual Studioのインストールから "MSVCR90D.DLL" ファイルをコピーVisual Studioの9.0 \ VC \ REDIST \ Debug_NonRedist \ AMD64用の\ Microsoft.VC90.DebugCRT

と C:\プログラムファイル(x86の)\のMicrosoft Visual Studioの8 \ VC \ REDISTの\ AMD64用の\ Microsoft.VC80.CRT

"MSVCR80.DLL"のファイルバージョンは "8.0.50727.42"で、 "MSVCR90D.DLL"のファイルバージョンは "9.0.21022.8"です。

embed.manifestファイル情報は次のとおりです。 タイプ= "win32の" 名前= "Microsoft.VC90.DebugCRT" バージョン= "9.0.21022.8" processorArchitecture = "AMD64" なPublicKeyToken = "1fc8b3b9a1e18e3b" 私が持っている

をビジュアルスタジオとdllファイルに関する知識が少ないので、本当にあなたの助けが必要です。

+1

あなたはすでにのVisual Studioの異なるバージョンからのリリースとデバッグDLLを混合しています。 VSの同じバージョンを使用して、すべてがリリースまたはデバッグのいずれかで構築されていることを確認してください。これには依存関係が含まれます。 – Bart

+0

Visual Studio 2005を使用してプロジェクトをコンパイルする必要があることを意味しますか?Visual Studio 2008を使用している場合は、Visual Studio 2005のインストールフォルダにのみ存在する「MSVCR80.DLL」が必要です。なぜVisual Studio 2008でコンパイルしている間にMSVCR80.DLLが必要なのでしょうか? – Lily

+0

私のコンピュータで「IESHIMS.DLL」を検索しましたが、サイズの異なるバージョンがあります。 「C:\ Program Files \ Internet Explorer」にあるバージョンを使用しましたが、それは本当ですか? – Lily

答えて

2

エラーがdllの不足に関連していないことがわかりました。 MATLABエラーは "無効なmexファイル"です。エラーメッセージ: '指定された "モジュールが見つかりませんでした。DLLが見つからない場合があります。しかし、エラーメッセージ "指定された"プロシージャ "見つかりませんでした"、問題が異なる場合があります

+1

**プロシージャ**のエラーが表示されないという別の問題について、より具体的に説明できますか? – Shai

2

私はこの同じ問題がありました。問題を解決することは、奇妙で、見るのが難しい問題でした。

[プロジェクト]> [プロパティ]に移動します。下の図のように、[構成プロパティ]> [リンカ]> [詳細設定]を選択します。次に、「Target Machine」と表示されている場所で、「設定されていません」の設定をMachineX64(/ Machine:X64)に変更します。このことを理解するまでにはしばらく時間がかかり、以来、私はVisual Studioからmex + cudaファイルをゼロからコンパイルしています。うまくいけば、これもあなたのために問題を解決します。

image

+0

ありがとう、あなたの答えは、私はすでに "マシン:X64"オプションを設定し、それは問題ではありません。 – Lily

+0

2番目の説明のために、マシン:X64をリンカの下に設定しますか?あなたが既に行ったことがあれば、あなたのプロジェクトを圧縮して私ができることを見ることができますか? – user1477622

関連する問題