![](/img/trans.png)
[英]CUDA code compile on Linux but not in Windows ( Visual Studio 2012)
[英]CUDA compile error on Linux, but Windows Visual Studio succeed
該程序可以在Windows-Visual Studio 12上成功構建,但是在Linux上編譯時遇到了一些問題。
編譯命令: nvcc main.cu
int main(int argc, char **argv) {
... (Skip some code)
// Read file.
MemoryBuffer<char> text(size + 1); // size type is size_t
auto text_smem = text.CreateSync(size);
fread(text_smem.get_cpu_wo(), 1, size, fp);
... (Skip some code)
}
編譯器錯誤信息:
auto text_smem = text.CreateSync(size);
發生有關error: explicit type is missing ("int" assumed)
和error: no suitable conversion function from "SyncedMemory<char>" to "int" exists
fread(text_smem.get_cpu_wo(), 1, size, fp);
發生以下error: expression must have class type
如何解決Linux OS中的編譯器錯誤?
MemoryBuffer是一個類,詳細代碼可以從這里查看 。
這取決於您已安裝的CUDA Toolkit的版本,但是我想您可以嘗試對nvcc
使用--std=c++11
選項,以明確啟用現代C ++功能。
參照https://devblogs.nvidia.com/parallelforall/power-cpp11-cuda-7/
要啟用C ++ 11支持,請將
--std=c++11
標志傳遞給nvcc
(Microsoft Visual Studio不需要此選項)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.