Проблемы с компиляцией

При разбиении кода на 2 файла (для карты и для хоста) и подключении во втором файле первый через #include получаю ошибку линковки. Говорит что функции, объявленные в первом файле, уже объявлены во втором о_О. Единственное, что помогает - изменение расширения файла с .cu на .h.
Так же возникают проблемы, если в .cpp файле использовать стандартные функции cuda, типа cudaFree, cudaMemcpy. Говорит, что ничего такого найти не может, хотя в .cu файле все собирает (это вроде любой C++ компилятор должен собирать при условии наличия хедеров)
Использую Cuda 3.0 +VS.

Forums: 

Предполагаю, что для .cu

Предполагаю, что для .cu файла у тебя подключены все необходимые библиотеки, а для .cpp нет, поэтому он и не находит определенных функций.

1. расширения у этих файлов

1. расширения у этих файлов какие?
полагаю оба *.cu, в этом случае каждый из них компилируется по-отдельности, но так как второй инклудится в первый, то код второго файла компилируется дважды. отсюда и ошибки.

2. это потому что *.cu и *.cpp файлы компилируются разными компиляторами. и все что имеет отношения к cuda должно быть в *.cu файле. (можешь оформить это в виде lib или dll и подключать к остальному проекту соотв., хотя можно попробовать и из объектных файлов собрать один бинарник.

Суммируя для тех, кто может с

Суммируя для тех, кто может с этим столкнутся:
Все функции, выполняемые на GPU, а также все функции, вызывающие функции, выполняемые на GPU, должны находится в .cu файлах. Далее же уже можно вызывать эти функции из .cpp файлов, или оформлять в виде отдельной библиотеки.