我正在使用nVidia的CUDA C進行一些編程。我使用Visual Studio 2008作爲我的開發環境,並且我遇到了一些鏈接問題,我想知道是否有人知道如何解決它或者有同樣的問題,可以提供解決方案。Visual Studio與Cuda的鏈接問題
我的程序由3個文件組成。 1個頭文件(stuff.h),1個C源文件(stuff.c)和1個CUDA C文件(main.cu)。 (這些名字是假的,但它只是爲了說明這一點)。
現在stuff.h/stuff.c定義/實現一些我從main.cu中調用的幫助函數。
我使用的是Visual Studio 2008和nVidia的GPU Computing SDK中的Cuda.rules,並且所有編譯都很好,但是當涉及將所有文件鏈接在一起時,它會失敗。似乎所有在stuff.h中定義的函數(並在stuff.c中實現)都沒有正確鏈接,因爲它們被標記爲「未解析的外部符號」。
什麼是可能的原因,我該如何解決這個問題?
非常感謝,
ExtremeCoder
好了,所以我設法讓這一切編譯。看起來我所要做的只是將東西實現文件的擴展名從.c改爲.cpp(意味着編譯爲C++,而編譯爲c不行!)。
這可能是什麼原因造成的?我寧願把一切都爲.C代替的.cpp(因爲這是真正的意思是C代碼...
任何指針?
感謝您的幫助。我得到了它的工作。有沒有辦法讓.cu文件編譯爲C文件,而不是C++文件呢? 謝謝。 – ExtremeCoder 2010-08-16 16:55:28
您可以嘗試'--host-compilation = c'選項,但請參閱以下警告:http://forums.nvidia.com/index.php?showtopic=101609。一般來說,我更喜歡將標準C/C++文件中的main函數和其他所有內容保留下來,然後在CU文件中只包含內核和包裝器。許多Thrust的東西也需要進入CU文件... – Tom 2010-08-17 10:31:22