Я скомпилировал opencv 4 и Cuda 9.2 на машине Ubuntu 18.04. Я попытался протестировать образец кода с файлом заголовка OpenCV, который часто использую в своем приложении. При компиляции с помощью nvcc я получаю следующее:
/usr/local/cuda/bin/nvcc -o saxpy saxpy.cu --std=c++11 -I /opt/sensen/include/ `pkg-config opencv --cflags --libs`
/opt/sensen/include/opencv2/core/types_c.h(1359): error: no suitable constructor exists to convert from "int" to "CvSlice"
/opt/sensen/include/opencv2/core/types_c.h(1359): error: expected a ")"
2 errors detected in the compilation of "/tmp/tmpxft_00004bc8_00000000-8_saxpy.cpp1.ii".
Кто-нибудь еще сталкивался с этой проблемой? Любые предложения приветствуются.
Извините, я не ясно выразился. Мне нужно включить этот файл заголовка в мое фактическое приложение. Но я получал эту ошибку, поэтому я попытался написать простой код для тестирования, но все равно получал ту же ошибку.
Вы совершенно ясно выразились. Но зачем вам импортировать этот файл в код CUDA для? Он не содержит ничего, что можно было бы использовать в ядре CUDA. Я на 100% уверен, что сам OpenCV не пытается скомпилировать содержимое этого заголовка в любом своем внутреннем коде CUDA. Так зачем тебе?
Унгх. Ваш ответ @talonmies, действительно сопливый. Я также не включаю этот файл напрямую, он попадает в группу, когда вы выполняете компиляцию cuda, и ошибка является неожиданной. Я тоже понимаю. Я использую OpenCV 3.4.4.
В Core_c.h: #ifndef OPENCV_CORE_C_H #define OPENCV_CORE_C_H #include "opencv2 / core / types_c.h" ... и т. д.





Йо Холмс, попробуйте заменить этот странный блок кода следующим:
CV_INLINE CvSlice cvSlice( int start, int end )
{
CvSlice slice = { start, end };
return slice;
}
у меня сработало! (В Visual Studio 2017)
У меня была та же проблема, что и у @ mandar-sovani.
Я использую Ubuntu 14.04 и OpenCV 3.4.3. Мое решение этой проблемы: проверьте свой код cuda (файлы .cu), какая директива препроцессора #include добавляет заголовок OpenCV. Затем каким-то образом измените свой код, чтобы указанный заголовок не был включен в ваш код cuda (файлы .cu).
Примечание: спасибо @talonmies за понимание решения.
Очевидный ответ - не пытайтесь импортировать этот заголовок в путь компиляции CUDA.