2013-07-08 2 views
0

을위한 CUDA 코드를 구축하는 동안 2010LNK2005 오류가 난 비주얼 스튜디오에 새로운 오전과 내가 비주얼 스튜디오를 사용하여 내 CUDA 코드에서 cuPrintf를 사용하는 것을 시도하고있다 cuPrintf

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

그러나 나는 다음과 같은 오류

gpuLBMSolver.cu.obj : error LNK2005: "int __cdecl cuPrintf(char const *)" ([email protected]@[email protected]) already defined in cuPrintf.cu.obj 
1>gpuLBMSolver.cu.obj : error LNK2005: "void __cdecl cuPrintfRestrict(int,int)" ([email protected]@[email protected]) 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 
무엇입니까 사전에 동일한 코드 내 리눅스 시스템에서 잘 작동했다

... 감사

답변

0

당신은 .cu과 모두를 포함 할 필요가 없습니다 .cuh 파일 둘 중 하나를 포함 할 수 있습니다. 당신이 .cuh 파일의 주석에 주어진 예를 들어 다음 .cu 파일을 포함하는 경우

, 그건 당신이 할 필요가 전부입니다. 당신이 .cuh 파일을 포함합니다 , 당신은 또한 프로젝트의 .cu 파일을 구축하고, 그것을 연결해야합니다 당신은 단순히 파일 등의 순서를 반대로하면

은 또한 일 수 있습니다.

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

프로젝트에서 빌드 cuPrintf.cu하려고하지 않는 가정.

코드에 "cuPrintf.cu"가 포함되어있는 것으로 보입니다. 프로젝트에 cuPrintf.cu를 별도로 작성하고 있습니다. 너는 그렇게 할 수 없다.

"cuPrintf.cu"가 포함되었으므로 프로젝트 원본 파일에서 cuPrintf.cu 파일을 삭제해야합니다. 파일을 지우지 말고 빌드 할 프로젝트 소스 파일에 나타나는 사실을 삭제하십시오.

+0

내 코드에서 작동하지 않습니다 ... 여전히 동일한 오류가 발생합니다 ... – amitdonanand

+0

내 대답이 업데이트되었습니다. 당신은 당신의 파일 중 하나에서'#include "cuPrintf.cu"'를하고 있고, *와 *는 당신의 프로젝트에서'cuPrintf.cu'를 따로 만들고 있습니다. 프로젝트에'cuPrintf.cu'를 빌드하지 마십시오. 그냥 포함 시키십시오. –

+0

감사합니다. – amitdonanand

관련 문제