Не могу получить минимальный пример Cpprest для компиляции под WindowsC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Не могу получить минимальный пример Cpprest для компиляции под Windows

Сообщение Anonymous »

Я пытаюсь заставить cpprestsdk работать под Windows. Я установил cpprestsdk с vcpkg:

Код: Выделить всё

cpprestsdk               2.10.19#3        C++11 JSON, REST, and OAuth library
cpprestsdk[brotli]                        Brotli compression support
cpprestsdk[compression]                   HTTP Compression support
У меня есть следующие cmakelists.txt

Код: Выделить всё

cmake_minimum_required(VERSION 3.25)
project(weather-data-app LANGUAGES CXX)

# Require C++20
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# Define minimum Windows version for WinHTTP & WebSocket support
add_compile_definitions(_WIN32_WINNT=0x0601)

# Point to vcpkg’s toolchain file on the command line:
find_package(cpprestsdk CONFIG REQUIRED)

add_executable(${PROJECT_NAME} src/main.cpp)

# Link the cpprestsdk imported target (brings HTTP, JSON, and WebSocket client libs)
target_link_libraries(${PROJECT_NAME}
PRIVATE cpprestsdk::cpprest
)
< /code>
и следующий минимальный пример < /p>
// src/main.cpp

#include 
#include 

int main()
{
// Instantiate types to verify headers are present
web::http::client::http_client httpClient(U("http://localhost"));
web::websockets::client::websocket_client wsClient;
(void)httpClient;
(void)wsClient;
return 0;
}
< /code>
Я строю проект с помощью следующей команды Cmake < /p>
cmake -S .  -B build ^
-DCMAKE_TOOLCHAIN_FILE="C:/vcpkg/scripts/buildsystems/vcpkg.cmake" ^
-DVCPKG_TARGET_TRIPLET="x64-windows" ^
-DCMAKE_BUILD_TYPE=Debug
< /code>
и используйте следующую команду для компиляции: < /p>
cmake --build build --config Debug
< /code>
И я получаю следующую ошибку: < /p>
MSBuild version 17.14.23+b0019275e for .NET Framework

1>Checking Build System
Building Custom Rule C:/Users/me/dev/weather-data-app/CMakeLists.txt
main.cpp
C:\Users\me\dev\weather-data-app\src\main.cpp(9,22): error C3083: 'websockets': the symbol to the left of a '::' must be a type [C:\Users\me\dev\weather-data-app\build\weather-app-app.vcxproj
]
C:\Users\me\dev\weather-data-app\src\main.cpp(9,34): error C2039: 'client': is not a member of 'web' [C:\Users\me\dev\weather-data-app\build\weather-app-app.vcxproj]
C:\vcpkg\installed\x64-windows\include\cpprest\http_client.h(75,11):
see declaration of 'web'

C:\Users\me\dev\weather-data-app\src\main.cpp(9,34): error C2871: 'client': a namespace with this name does not exist [C:\Users\me\dev\weather-data-app\build\weather-app-app.vcxproj]
C:\Users\me\dev\weather-data-app\src\main.cpp(17,44): error C2653: 'methods': is not a class or namespace name [C:\Users\me\dev\weather-data-app\build\weather-app-app.vcxproj]
C:\Users\me\dev\weather-data-app\src\main.cpp(17,53): error C2065: 'GET': undeclared identifier [C:\Users\me\dev\weather-data-app\build\weather-app-app.vcxproj]
C:\Users\me\dev\weather-data-app\src\main.cpp(18,47): error C3536: 'response': cannot be used before it is initialized [C:\Users\me\dev\weather-data-app\build\weather-app-app.vcxproj]
C:\Users\me\dev\weather-data-app\src\main.cpp(21,9): error C2065: 'websocket_client': undeclared identifier [C:\Users\me\dev\weather-data-app\build\weather-app-app.vcxproj]
C:\Users\me\dev\weather-data-app\src\main.cpp(21,26): error C2146: syntax error: missing ';' before identifier 'wsClient' [C:\Users\me\dev\weather-data-app\build\weather-app-app.vcxproj]
C:\Users\me\dev\weather-data-app\src\main.cpp(21,26): error C2065: 'wsClient': undeclared identifier [C:\Users\me\dev\weather-data-app\build\weather-app-app.vcxproj]
C:\Users\me\dev\weather-data-app\src\main.cpp(22,9): error C2065: 'wsClient': undeclared identifier [C:\Users\me\dev\weather-data-app\build\weather-app-app.vcxproj]
C:\Users\me\dev\weather-data-app\src\main.cpp(26,9): error C2065: 'websocket_outgoing_message': undeclared identifier [C:\Users\me\dev\weather-data-app\build\weather-app-app.vcxproj]
C:\Users\me\dev\weather-data-app\src\main.cpp(26,36): error C2146: syntax error: missing ';' before identifier 'outMsg' [C:\Users\me\dev\weather-data-app\build\weather-app-app.vcxproj]
C:\Users\me\dev\weather-data-app\src\main.cpp(26,36): error C2065: 'outMsg': undeclared identifier [C:\Users\me\dev\weather-data-app\build\weather-app-app.vcxproj]
C:\Users\me\dev\weather-data-app\src\main.cpp(27,9): error C2065: 'outMsg': undeclared identifier [C:\Users\me\dev\weather-data-app\build\weather-app-app.vcxproj]
C:\Users\me\dev\weather-data-app\src\main.cpp(28,9): error C2065: 'wsClient': undeclared identifier [C:\Users\me\dev\weather-data-app\build\weather-app-app.vcxproj]
C:\Users\me\dev\weather-data-app\src\main.cpp(28,23): error C2065: 'outMsg': undeclared identifier [C:\Users\me\dev\weather-data-app\build\weather-app-app.vcxproj]
C:\Users\me\dev\weather-data-app\src\main.cpp(30,22): error C2065: 'wsClient': undeclared identifier [C:\Users\me\dev\weather-data-app\build\weather-app-app.vcxproj]
C:\Users\me\dev\weather-data-app\src\main.cpp(32,22): error C3536: 'inMsg': cannot be used before it is initialized [C:\Users\me\dev\weather-data-app\build\weather-app-app.vcxproj]
C:\Users\me\dev\weather-data-app\src\main.cpp(34,9): error C2065: 'wsClient': undeclared identifier [C:\Users\me\dev\weather-data-app\build\weather-app-app.vcxproj]
< /code>
Это кажется, что заголовки не найдены? Я новичок в разработке под Windows, не уверен, что еще здесь пойдет не так. Бизнес cmake_toolchain_file 
кажется хорошим. Не знаю.


Подробнее здесь: https://stackoverflow.com/questions/797 ... er-windows
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»