2

VisualStudio2012でCUDA/C ++コードをビルドしようとすると、次のエラーが発生します。CUDAv5.0を使用しています

1>  Generating Code...
1>LINK : warning LNK4044: unrecognized option '/MLd'; ignored
1>cublas_device.lib(kepler_sm35_gemm_wrapper.obj) : error LNK2019: unresolved external symbol __cudaRegisterLinkedBinary_59_tmpxft_00001040_00000000_8_kepler_sm35_gemm_wrapper_cpp1_ii_9402ff4f referenced in function "void __cdecl __sti____cudaRegisterAll_59_tmpxft_00001040_00000000_8_kepler_sm35_gemm_wrapper_cpp1_ii_9402ff4f(void)" (?__sti____cudaRegisterAll_59_tmpxft_00001040_00000000_8_kepler_sm35_gemm_wrapper_cpp1_ii_9402ff4f@@YAXXZ)

誰かが問題がどこにあるのかについて何か考えがありますか?私はグーグルを試しましたが、これに対する解決策はまだ見つかりませんでした。

どうもありがとう!

4

6 に答える 6

2

(デバッグ)プロジェクトは、Microsoftリンカーまたはnvccとリンクするように設定されていますか?(エラーメッセージはMicrosoftリンカーから送信されているようです。)この質問を確認することをお勧めします

(リンク先の)デバイスコードとデバイスライブラリは、nvccにリンクする必要があります。

于 2013-02-26T20:30:02.570 に答える
2

この記事では、/MLd リンカー オプションの機能に関する情報を示します。これは基本的に、ロードされているマルチスレッド ライブラリとプロジェクトの構成に関係しています。

于 2013-02-22T19:00:05.673 に答える
1

CUDA ライブラリのデバッグ バージョンにリンクする必要があります。モードでコンパイルしようとしましたが、Debugモードでビルドされていないように見えるライブラリに対してリンクしていdebugます。したがって、すべてが台無しになります。

したがって.lib、デバッグ バージョンのファイルを入手するか、ソース コードがある場合は自分でビルドする必要があります。次に、デバッグ ビルドをデバッグ.libとリンクし、リリースも同じようにします。

また、同じバージョンのコンパイラを使用してすべてlibの をビルドすると役立つ場合があります。そうしないと、名前マングリングの問題が発生する可能性があります (これも問題の潜在的な原因になる可能性があります)。新しいVSバージョンに切り替えた後、それは私に起こりました.lib.リンクしているすべてのものを再コンパイルする必要がありました.

于 2013-02-26T07:15:46.313 に答える
0

定義されていない外部 (extern) 変数を使用しているように見えます。詳細については、コードが必要です

于 2013-02-25T12:23:25.203 に答える
0

私はそれを修正することができました!未解決の外部シンボルを参照していた cublas_device.lib にリンクしていました。ただし、この lib ファイルは私のプロジェクトでは必要なかったので、リンクされたファイルから削除するだけでうまくいきました! ただし、リリース モードでは、このエラーは発生しませんでした。おそらく、cublas_device.lib のコードのこの部分がデバッグ セクションにあったためです。

いずれにせよ、私のプロジェクトでは必要ないので、削除すると問題は解決します。

返信ありがとうございます。

于 2013-02-27T18:54:10.137 に答える