11/06/2020 09:15:53
Visual Studio 2019 Boost phiên bản 1.71
Nguồn mã: https://github.com/qicosmos/cinatra
Lưu ý: Hướng dẫn này dành cho môi trường Visual Studio tiếng Trung.
1, Tạo dự án C++ Windows trống
Trình đơn Tạo mới -> Dự án
Chọn ngôn ngữ C++, loại dự án Trống
2, Tải mã nguồn và tích hợp vào dự án VS
Tải mã nguồn từ github, chỉ giữ lại các thư mục example và include vào thư mục dự án
Nhấp chuột phải vào dự án -> Mở trong trình quản lý tệp
Trong quản lý giải pháp, nhấp vào biểu tượng "Hiển thị tất cả thư mục" để kích hoạt, bạn sẽ thấy các tệp đã sao chép
Các tệp sẽ có màu đỏ, nhấp chuột phải vào tệp và thư mục -> "Bao gồm trong dự án", biểu tượng sẽ chuyển màu bình thường
3, Thêm thư viện Boost, đặt chuẩn C++17, tích hợp Boost vào dự án
Hướng dẫn cài đặt Boost: https://www.cnblogs.com/zx-admin/p/11792567
Nhấp chuột phải dự án -> Thuộc tính -> C/C++ -> Ngôn ngữ -> Chuẩn C++
Chọn ISO C++ 17
Thư mục bao gồm
Đảm bảo đã biên dịch Boost trước
Dự án -> Thuộc tính -> Chọn Thư mục VC++, thêm đường dẫn vào Thư mục bao gồm và Thư viện bao gồm
Thêm đường dẫn D:\boost_1_71_0\ vào Thư mục bao gồm
Thêm đường dẫn D:\boost_1_71_0\stage\lib vào Thư viện bao gồm
4, Giải quyết các lỗi khi chạy
Lỗi 1: This function or variable may be unsafe
Thêm định nghĩa _CRT_SECURE_NO_WARNINGS
Tham khảo: https://jingyan.baidu.com/article/49711c616b8a1ffa441b7cdc.html
Lỗi 2: C4996 'std::codecvt_utf8':
Thêm #pragma warning(disable:4996) vào url_encode_decode.hpp để bỏ qua cảnh báo
5, Hướng dẫn sử dụng
Thử nghiệm với demo trong thư mục example, tệp main.cpp
Sao chép mã nguồn
#include <iostream>
#include "../include/cinatra.hpp"
using namespace cinatra;
int main() {
http_server server(std::thread::hardware_concurrency());
bool r = server.listen("0.0.0.0", "8090");
if (!r) {
//LOG_INFO << "listen failed";
return -1;
}
//server.on_connection([](auto conn) { return true; });
server.set_http_handler<GET, POST>("/", [](request& req, response& res) mutable {
res.set_status_and_content(status_type::ok, "xin chào thế giới");
//res.set_status_and_content(status_type::ok, std::move(str));
});
server.set_http_handler<GET>("/plaintext", [](request& req, response& res) {
//res.set_status_and_content<status_type::ok, res_content_type::string>("Hello, World!");
res.set_status_and_content(status_type::ok, "Xin chào, Thế giới!", req_content_type::string);
});
server.run();
return 0;
}
Sau khi chạy thành công, truy cập
127.0.0.1:8090 để kiểm tra