Closed dbxxx-ac closed 3 years ago
我的CMakeList改成了下面这样:
# CMake 版本要求 (最低 3.1)
cmake_minimum_required (VERSION 3.1)
# 项目名称
project(my-qqrobot)
# 设置项目的 C++ 标准
set(CMAKE_CXX_STANDARD 11)
# 不要构建 mirai-cpp 自带的 examples
set(MIRAI_CPP_BUILD_EXAMPLES OFF CACHE BOOL "Build examples" FORCE)
# 添加子模块 mirai-cpp
add_subdirectory(mirai-cpp)
# 源码以 UTF-8 编码保存,使用 MSVC 编译器时需要加编译参数提供支持
if(MSVC)
add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
message(STATUS "optional: /UTF-8")
endif(MSVC)
add_executable(${PROJECT_NAME} src/main.cpp)
# 设置头文件目录
include_directories(include)
# 链接 mirai-cpp
target_link_libraries(${PROJECT_NAME} PRIVATE mirai-cpp)
# 使用 mirai-cpp 静态库
target_compile_definitions(${PROJECT_NAME} PRIVATE MIRAICPP_STATICLIB)
# gcc 要连接 pthread
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
target_link_libraries(${PROJECT_NAME} PRIVATE pthread)
target_link_libraries(${PROJECT_NAME} PRIVATE ssl)
target_link_libraries(${PROJECT_NAME} PRIVATE crypto)
# 上边这两行是我后加的
endif()
不一定是bug,也有可能是我哪里搞错了。
我还把httplib.h更新成最新版本了……
因为旧版本(也就是mirai-cpp内置的httplib.h版本)的httplib.h好像有bug
我没尝试过这个http库的全部功能,所以也不清楚错误在哪里。 定位错误需要你提供崩溃时的调用堆栈。
定义这个宏的话,用下面的方式也许会比较好(否则你要确保这个宏的定义在#include<mirai.h>
之上)
# 加入这一行
target_compile_definitions(${PROJECT_NAME} PRIVATE CPPHTTPLIB_OPENSSL_SUPPORT)
target_link_libraries(${PROJECT_NAME} PRIVATE ssl)
target_link_libraries(${PROJECT_NAME} PRIVATE crypto)
如果你需要发起http请求,其实我更推荐你使用curl而不是使用mirai-cpp内置的http库。(虽然引入两个http库蛮蠢的,但是没办法,这是cpp)
我没尝试过这个http库的全部功能,所以也不清楚错误在哪里。 定位错误需要你提供崩溃时的调用堆栈。
定义这个宏的话,用下面的方式也许会比较好(否则你要确保这个宏的定义在
#include<mirai.h>
之上)# 加入这一行 target_compile_definitions(${PROJECT_NAME} PRIVATE CPPHTTPLIB_OPENSSL_SUPPORT) target_link_libraries(${PROJECT_NAME} PRIVATE ssl) target_link_libraries(${PROJECT_NAME} PRIVATE crypto)
如果你需要发起http请求,其实我更推荐你使用curl而不是使用mirai-cpp内置的http库。(虽然引入两个http库蛮蠢的,但是没办法,这是cpp)
感谢您的回复!
感谢您的建议,我换用curl试下。