在爲網絡問題找到答案時,我看到了多個論壇和博客文章,討論如何設置,編譯,鏈接和運行CUDA在Visual Studio 2008' 項目CUDA&Visual Studio 2008:嘗試鏈接不同項目時的問題
(我想給的鏈接,但我不能,作爲一個新的海報:p)
但缺少什麼嗎?
缺少的是,所有上述指南或帖子告訴你如何設置一個VS項目,這將是啓動項目,並將自行運行。因此,他們正在使用「CUDA運行時API規則」來定製創建CUDA友好的.exe文件。
我想要什麼?
1)我想要一個VS解決方案,它將包含多個項目,其中大部分都是用C++編寫的。將會有一個使用C++編寫的主項目,創建'.exe'(包含'main'函數並因此控制流程)以及多個其他項目,這些項目將創建主項目將鏈接的適當'.lib'文件。 2)最簡單的形式,我需要一個項目,將做CUDA的東西,這將創建lib文件和主要項目,將鏈接到它並使用它。
我到處都找不着,沒有人似乎使用多個項目。
我的問題是: 1)CUDA項目創建了一個lib,因此必須使用「CUDA驅動程序API規則」,而不是運行時的變體(如果我敢這樣做,則CUDA項目嘗試使用使用的庫由主要的一個和有多個定義的項目' 2)當試圖做到這一點正確的方式主要項目無法鏈接到CUDA項目
這裏是我用來顯示交易是什麼樣的代碼我也會附上VS sln檔案給那些想要試用的人)
Outline:
VS Solution
Main Project(C++ project producing the .exe and containing the main function)
main.cpp
#include "../CUDAProject/testCuda.h"
int
main(int argc, char** argv)
{
testCudaClass* t2;
t2 = new testCudaClass();
t2->stub_function();
return 0;
}
CUDA Project:
testCuda.h
#include <cstdio>
#include <cstdlib>
#include <iostream>
class testCudaClass
{
public:
void stub_function();
};
testCuda.cpp
#include "testCuda.h"
extern "C" int cuda_function();
void testCudaClass::stub_function()
{
int a;
a=cuda_function();
std::cout<< a <<"\n";
}
test.cu
#include "cuda.h"
extern "C" int cuda_function()
{
return 5;
}
附件(臨時保管箱公共鏈接)是一個帶有2個VS2008解決方案的zip文件,其中有一個CUDA項目可以正常工作,其中一個我嘗試執行上述操作(部分項目代碼概述如上)
http://dl.dropbox.com/u/3091507/CUDA.zip
我會非常感激的任何信息或建議,可以幫助我解決這個難題
非常感謝 亞當
嗨,在我熱情地嘗試你的解決方案之前,我想說的是,test.lib只是一個普通的C++庫,它非常接近CUDA庫,我只是試圖向人們展示問題並非如此作爲簡單... 我會檢查現在回來給你 感謝百萬!!!! – Adam 2011-03-04 10:08:29
好吧我明白你的意思了,是的,我一直在重命名的東西,試圖讓這個例子簡單和搞砸。 仍在CUDA上工作。將盡快更新! – Adam 2011-03-04 10:12:46
天鵝座你是一個CUDA上帝! (2)在CUDA項目中使用Runtime API (3)在CUDA項目 中執行相同的運行庫lib(愚蠢的我)做了詭計! ! – Adam 2011-03-04 10:28:28