0

Visual Studio を初めて使用し、Visual Studio 2010 を使用して cuda コードで cuPrintf を使用しようとしています。

#include "cuPrintf.cu"
#include "cuPrintf.cuh"

しかし、私は次のエラーが発生しています

gpuLBMSolver.cu.obj : error LNK2005: "int __cdecl cuPrintf(char const *)" (?cuPrintf@@YAHPBD@Z) already defined in cuPrintf.cu.obj
1>gpuLBMSolver.cu.obj : error LNK2005: "void __cdecl cuPrintfRestrict(int,int)" (?cuPrintfRestrict@@YAXHH@Z) already defined in cuPrintf.cu.obj
1>gpuLBMSolver.cu.obj : error LNK2005: _cudaPrintfInit already defined in cuPrintf.cu.obj
1>gpuLBMSolver.cu.obj : error LNK2005: _cudaPrintfEnd already defined in cuPrintf.cu.obj
1>gpuLBMSolver.cu.obj : error LNK2005: _cudaPrintfDisplay already defined in cuPrintf.cu.obj

同じコードが私の Linux マシンで正常に動作していました...よろしくお願いします

4

1 に答える 1

0

.cuと ファイルの両方を含める必要はありません.cuh。どちらかを含めることができます。

.cuファイル内のコメントに示されている例に従って、ファイルを含める場合は、それ.cuhだけで十分です。ファイルのみを含める場合は、プロジェクトでファイルをビルドしてリンクする.cuh必要もあります。.cu

ファイルを含める順序を逆にするだけでも機能する場合があります。

#include "cuPrintf.cuh"
#include "cuPrintf.cu"

プロジェクトでビルドしようとしないと仮定しますcuPrintf.cu

コードに「cuPrintf.cu」を含め、プロジェクトで cuPrintf.cu を個別にビルドしているようです。それをしてはいけない。

「cuPrintf.cu」をインクルードしているため、プロジェクト ソース ファイルから cuPrintf.cu ファイルを削除する必要があります。(ファイルを削除しないでください。ビルドするプロジェクト ソース ファイルに表示されるという事実を削除するだけです。)

于 2013-07-08T04:27:09.777 に答える