CUDA e Visual Studio 2008: Problemas ao tentar vincular projetos diferentes

Enquanto vasculhava a rede em busca de uma resposta para o meu problema, vi várias postagens em fóruns e blogs abordando o tópico 'Como configurar, compilar, vincular e executar um projeto CUDA no VIsual Studio 2008'

(Eu estava tentando fornecer os links, mas não tenho permissão para, como um novo pôster: p)

Mas o que está faltando aqui?

O que está faltando é que todos os guias ou postagens acima informam como configurar um único projeto do VS que será o projeto de inicialização e será executado sozinho. Como conseqüência, eles estão usando a 'Regra da API de tempo de execução CUDA', que é personalizada para criar um arquivo .exe compatível com CUDA.

O que eu quero / preciso?

1) Quero ter uma solução VS que contenha vários projetos, a maioria dos quais são escritos em C ++. Haverá um projeto principal escrito em C ++ criando o '.exe' (contendo a função 'principal' e, portanto, controlando o fluxo) e vários outros projetos que criarão os arquivos '.lib' apropriados aos quais o projeto principal será vinculado. 2) Na forma mais simples, preciso de um projeto que faça as coisas da CUDA que criarão o arquivo lib e o projeto principal que será vinculado a ele e o utilizará.

Eu olhei em todos os lugares sem sucesso, ninguém parece estar usando vários projetos.

Meu problema é: 1) O projeto CUDA cria uma biblioteca e, portanto, deve usar a 'Regra da API do driver CUDA' e não a variante de tempo de execução (se eu ousar, o projeto CUDA tenta usar as bibliotecas usadas pela principal e existem projetos multiplamente definidos ' 2) Ao tentar fazê-lo da maneira correta, o projeto principal não pode se vincular ao projeto CUDA

Aqui está o código de exemplo que estou usando para mostrar qual é o acordo (também anexarei o arquivo VS sln aqui para aqueles que desejam experimentá-lo)

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;
                }           

Em anexo (links públicos do dropbox temporário) está um arquivo zip com 2 soluções VS2008, uma em que tenho um único projeto CUDA que funciona bem e outra em que tento fazer o acima (parte do código do projeto é descrita acima)

http://dl.dropbox.com/u/3091507/CUDA.zip

Gostaria muito de receber qualquer informação ou conselho que possa me ajudar a resolver esse enigma

Muito obrigado Adam

questionAnswers(1)

yourAnswerToTheQuestion