Библиотека облака точек не работает в Visual Studio 2019 - PullRequest
0 голосов
/ 05 августа 2020

Я установил библиотеку pointcloud с помощью vcpkg. Я использовал командную строку «vcpkg install pcl: x64- windows», и все остальные библиотеки были установлены вместе с PCL. После этого я использовал ". \ Vcpkg \ vcpkg integration install", чтобы все библиотеки работали непосредственно в моем проекте Visual Studio 2019. Фактически, мой проект (содержащий пример демонстрационного кода в https://pcl.readthedocs.io/projects/tutorials/en/latest/writing_pcd.html#writing -pcd ) после того, как команда правильно включила два файла заголовков и не показывала никаких проблем. Однако после запуска кода я получил кучу ошибок, связанных с библиотекой boost, таких как:

Error   C2116   'boost::interprocess::winapi::GetFileSizeEx': function parameter lists do not match between declarations    RegistrationAlgorithm   C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\fileapi.h    

Error   C2733   'CreateSemaphoreA': you cannot overload a function with 'C' linkage RegistrationAlgorithm   C:\vcpkg\vcpkg\installed\x64-windows\include\boost\interprocess\detail\win32_api.hpp

Error   C4996   '_open': This function or variable may be unsafe. Consider using _sopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.    RegistrationAlgorithm   C:\vcpkg\vcpkg\installed\x64-windows\include\pcl\io\low_level_io.h          

Тот же самый вопрос (тот же пример кода, те же ошибки) был задан здесь: библиотека облака точек не работает в VS 2019, но работает в VS 2017

Однако ему удалось заставить его работать, переключившись на инструменты сборки Visual Studio 2017 (v141) из инструментов сборки VS2019 (v142). Я загрузил версию 141 и переключился, но все равно получаю те же ошибки.

Есть какие-нибудь советы?

Я попытался запустить код через CMake, но в ходе этого процесса я столкнулся со многими другими ошибками.

Ответы [ 2 ]

1 голос
/ 06 августа 2020

Решения для C3861:

Вы можете переместить "typedef unsigned long long pop_t;" вне #if и #else, так что любой из них будет использовать параметр для вычисления. Если FLANN установлен в Program Files или Program Files (x86), вам необходимо запустить Visual Studio от имени администратора. Программные файлы и программные файлы (x86) защищены и требуют повышенных разрешений для редактирования любого содержимого каталогов. enter image description here

Also, you could refer to this ссылка для получения дополнительной информации.

1 голос
/ 05 августа 2020

Это проблема совместимости между межпроцессным ускорением и MSV C 2019. Согласно Microsoft , вы можете использовать еще не документированный переключатель совместимости в MSV C 2019 на предотвращение ошибок C2116 и C2733, связанных с повторным объявлением функций extern «C». Эта опция: /Zc:externC-

Это оставляет пару C4996 ошибок, связанных с использованием небезопасных функций CRT. Согласно сообщению об ошибке, их можно подавить, написав #define _CRT_SECURE_NO_WARNINGS перед включением файлов заголовков.

С обоими ними пример кода строится здесь нормально.

Изменить: чтобы добавить эту опцию, следуйте этому меню / маршруту диалога -

  • Project / Properties / C / C ++ / Command Line, затем введите эту опцию в текстовое поле Additional Options внизу
...