0

CUDA プロジェクトにリンクする Visual Studio C++ を使用して Windows フォーム アプリケーションを実装しようとしています。

  1. WFA を作成しました。

  2. 次に、プロジェクト プロパティの [参照の追加] 部分で .dll を参照して、アプリケーションを CUDA プロジェクトに動的にリンクしようとします。しかし、「追加できませんでした... .NETアセンブリまたは登録済みのActiveXコントロールではありません」と表示されました。

  3. したがって、WFA プロジェクトで CUDA を実行するために必要な .lib ファイルを使用して、CUDA プロジェクトの .obj を Linker->Input->Additional Dependencies 部分に追加します。次に、「致命的なエラー LNK1313: 純粋なモジュールが検出されました。ijw/ネイティブ モジュールとリンクできません」というエラーが発生しました。

  4. 共通言語ランタイム サポートを "Pure MSIL Common Language..." から "Common Language..." に変更しましたが、msvcrtd.lib と libcmt.lib が競合しています。このエラーは、CUDA プロジェクトの .obj ファイルが「追加の依存関係」から削除されると消えます。

CUDA プロジェクトのランタイムが MT であり、WFA プロジェクトのランタイムが MT dll であるため、このエラーが発生します。WFA のランタイムを MT に変更しましたが、「エラー D8016 : '/MTd' と '/clr' コマンドライン オプションは互換性がありません」というエラーが発生します。

"System::" を認識するためには /clr が必要なため、/clr オプションを取り除くことができません。

最も簡単な方法で cuda プロジェクトにリンクする Windows c++ を使用して Windows フォーム アプリケーションを作成するための提案はありますか? または、もっと簡単な方法があれば、喜んで聞いてくれます。

4

1 に答える 1

1

あなたの WFA アプリは、CLR を使用したマネージド C++ .NET アプリケーションだと思います。CLR アセンブリまたは COM オブジェクトであるかのように、アンマネージ CUDA DLL をインクルードしようとしています。したがって、VS は /MT (管理されていないマルチスレッド C ランタイムを使用する) と言っており、/CLR には互換性がありません。

そのため、CUDA DLL を CLR オブジェクトでラップするか、プロジェクトで CUDA の .NET Binding を使用する必要があります。CUDA.NET をダウンロードして、参考としてプロジェクトに組み込んでみてください。

http://www.hoopoe-cloud.com/Solutions/CUDA.NET/

于 2012-08-06T21:06:38.100 に答える