Как правильно связать созданные функции между файлами cuda и cpp? - PullRequest
1 голос
/ 27 июня 2019

Я пишу библиотеку MATLAB .mex для работы с c ++ и CUDA.В файлах .cu и .cpp мне нужно написать:

extern "C" void myFunction(float* variable1,float* variable2);

для компиляции с Visual Studio 2015. ОпределениеmyFunction находится в файле .cu , и я называю его в .cpp .Он уже работает, однако я хочу лучше организовать его и упростить исправление в будущем.

Мой вопрос: Есть ли способ создать заголовочный файл для ссылкиэта функция в обоих файлах, поэтому мне не нужно явно писать extern "C" в обоих из них?

1 Ответ

0 голосов
/ 28 июня 2019

Я предлагаю вам создать файл заголовка, например, назвать его myFile.h, там вы помещаете объявление функции только :

void myFunction(float* variable1,float* variable2);

Затем в вашем myFile.cu вы помещаете определение функции:

void myFunction(float* variable1,float* variable2){
    std::cout << "Hi! I'm a function!" << std::endl;
}

Наконец, вы должны включить заголовок в myFile.cu и myFile.cpp:

#include <cosFutStr.h>

Таким образом, вы получите определение функции в myFile.cu и сможете вызывать myFunction из myFile.cpp. Как сказано в комментариях talonmies, учитывая, что вы скомпилируете свои источники с помощью связи C ++, все будет правильно соединено без использования extern "C". Но я думаю, что это больше вопрос C ++, чем вопрос CUDA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...