Я пытаюсь скомпилировать (путем переноса) некоторый код в Windows 10, который изначально был разработан для Linux.
Код зависит от 2 внешних библиотек: cppkafka
и librdkafka
.
Я видел, что vcpkg
может получить библиотеки, скомпилировать их и автоматически сделать их доступными в Visual Studio 2015 (с помощью команды vcpkg integrate install
).
Я вижу, что vcpkg
правильно компилирует зависимости для windows 64 (cppkafka
и librdkafka
), поскольку .dll, .lib ... все доступны в папке установки vcpkg
.
Когда я пытаюсь скомпилировать свой код в Visual Studio 2015, я вижу ошибки, касающиеся заголовков зависимостей, что для меня неожиданно. Если vcpkg
скомпилировал их, почему Visual Studio этого не делает? Из документации vcpkg
я предполагаю, что они используют один и тот же компилятор. Далее я показываю некоторые примеры ошибок, которые я получаю:
1>------ Build started: Project: AndreKafkaDriver, Configuration: Release x64 ------
1>C:\...\vcpkg\installed\x64-windows\include\librdkafka/rdkafka.h(64): error C2371: 'ssize_t': redefinition; different basic types
1> C:\Siemens\Automation\WinCC_OA\3.16\api\include\winnt\win32.h(47): note: see declaration of 'ssize_t'
1>c:\...\vcpkg\installed\x64-windows\include\cppkafka\header_list.h(265): warning C4267: 'argument': conversion from 'size_t' to 'ssize_t', possible loss of data
1>C:\...\vcpkg\installed\x64-windows\include\cppkafka/utils/buffered_producer.h(1035): error C2065: 'queue1': undeclared identifier
1>C:\...\vcpkg\installed\x64-windows\include\cppkafka/utils/buffered_producer.h(1035): error C2065: 'queue2': undeclared identifier
1>C:\...\vcpkg\installed\x64-windows\include\cppkafka/utils/buffered_producer.h(1035): error C2065: 'mutex': undeclared identifier
1>C:\...\vcpkg\installed\x64-windows\include\cppkafka/utils/buffered_producer.h(1035): error C2275: 'std::mutex': illegal use of this type as an expression
1>C:\...\vcpkg\installed\x64-windows\include\cppkafka/utils/buffered_producer.h(1035): note: see declaration of 'std::mutex'
1>C:\...\vcpkg\installed\x64-windows\include\cppkafka/utils/buffered_producer.h(1035): error C2182: 'swap_queues': illegal use of type 'void'
1>C:\...\vcpkg\installed\x64-windows\include\cppkafka/utils/buffered_producer.h(1035): error C2470: 'cppkafka::BufferedProducer<BufferType,Allocator>::swap_queues': looks like a function definition, but there is no parameter list; skipping apparent body
1>C:\...\vcpkg\installed\x64-windows\include\cppkafka/utils/buffered_producer.h(1035): error C2072: 'cppkafka::BufferedProducer<BufferType,Allocator>::swap_queues': initialization of a function
1>kafkaHWService.cxx(29): fatal error C1083: Cannot open include file: 'execinfo.h': No such file or directory
...
Заранее спасибо,
Nerea