Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cmake 运行连接器c+时出现疯狂错误+;程序_Cmake_Clion_Mysql Connector_Mysql Connector C - Fatal编程技术网

Cmake 运行连接器c+时出现疯狂错误+;程序

Cmake 运行连接器c+时出现疯狂错误+;程序,cmake,clion,mysql-connector,mysql-connector-c,Cmake,Clion,Mysql Connector,Mysql Connector C,我的连接器/C++有问题。 我使用CYON作为IDE,希望创建一个C++程序来与MySQL数据库进行交互。 这是我的CMakeList.txt文件,其中包括c++/connector静态和动态库: cmake_minimum_required(VERSION 3.15) project(cpp_programming) set(CMAKE_CXX_STANDARD 20) set(CMAKE_INCLUDE_CURRENT_DIR ON) set(MYSQL_CPPCONN_DIR "C:/P

我的连接器/C++有问题。 我使用CYON作为IDE,希望创建一个C++程序来与MySQL数据库进行交互。 这是我的CMakeList.txt文件,其中包括c++/connector静态和动态库:

cmake_minimum_required(VERSION 3.15)
project(cpp_programming)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(MYSQL_CPPCONN_DIR "C:/Program Files/MySQL/MySQL Connector C++ 8.0")

include_directories(${PROJECT_NAME} PUBLIC ${MYSQL_CPPCONN_DIR}/include)
add_executable(${PROJECT_NAME} main.cpp)

# Static Libraries
target_link_libraries(${PROJECT_NAME} ${MYSQL_CPPCONN_DIR}/lib64/vs14/libcrypto.lib)
target_link_libraries(${PROJECT_NAME} ${MYSQL_CPPCONN_DIR}/lib64/vs14/libssl.lib)
target_link_libraries(${PROJECT_NAME} ${MYSQL_CPPCONN_DIR}/lib64/vs14/mysqlcppconn.lib)
target_link_libraries(${PROJECT_NAME} ${MYSQL_CPPCONN_DIR}/lib64/vs14/mysqlcppconn8.lib)
target_link_libraries(${PROJECT_NAME} ${MYSQL_CPPCONN_DIR}/lib64/vs14/mysqlcppconn8-static.lib)
target_link_libraries(${PROJECT_NAME} ${MYSQL_CPPCONN_DIR}/lib64/vs14/mysqlcppconn-static.lib)

# Dynamic Link Libraries
target_link_libraries(${PROJECT_NAME} ${PROJECT_SOURCE_DIR}/libcrypto-1_1-x64.dll)
target_link_libraries(${PROJECT_NAME} ${PROJECT_SOURCE_DIR}/libssl-1_1-x64.dll)
target_link_libraries(${PROJECT_NAME} ${PROJECT_SOURCE_DIR}/mysqlcppconn-7-vs14.dll)
target_link_libraries(${PROJECT_NAME} ${PROJECT_SOURCE_DIR}/mysqlcppconn8-2-vs14.dll)
<>我在我的C++源文件中只包括xDava.h头:

#include <iostream>
#include <mysqlx/xdevapi.h>

using namespace std;

int main()
{
    return 0;
}
链接dll文件或静态文件时是否出错

你有什么建议

请帮帮我,这会给我带来很多麻烦


这里有几个问题

  • 您不需要链接所有这些不同的库。您实际上只需要链接一个
    mysqlcppconn
    库。若要定位库,请尝试使用,并将其用于链接。您的CMake文件应简化为以下内容:
  • 我不确定您是否正在使用
    ssl
    crypto
    库,因此如果需要,请将它们添加回

  • 您的库(VisualC++)与您正在使用的编译器(MinGW)不匹配。据我所知,MySQL连接器C++没有提供一套明文库;它们只提供使用VisualStudio编译器构建的库。因此,您需要切换到使用VisualC++编译器来使用这些库。另一种选择是下载MySQL源代码,并尝试使用MinGW构建它,但这可能更困难

  • 希望这有帮助

    欢迎来到Stackoverflow!不鼓励发布代码或日志消息的链接。请在您的问题帖子中以文本形式发布完整的错误消息。此外,我不确定您是否需要链接所有这些不同的库。对于mysqlcppconn库,请尝试仅链接此库:
    lib64/vs14/mysqlcppconn.lib
    。谢谢,我这样做了,但再次收到上面的错误。上面的错误是什么。图像被切断,我们无法看到错误消息的有用部分。请将错误消息作为文本而不是图像添加到问题帖子中。您好,已编辑。。。。。
    ====================[ Build | cpp_programming | Release ]=======================
    "C:\Program Files\JetBrains\CLion 2019.3.2\bin\cmake\win\bin\cmake.exe" --build C:\Users\Kianoush\CLionProjects\cpp_programming\cmake-build-release --target cpp_programming -- -j 2
    Scanning dependencies of target cpp_programming
    [ 50%] Building CXX object CMakeFiles/cpp_programming.dir/main.cpp.obj
    [100%] Linking CXX executable cpp_programming.exe
    CMakeFiles\cpp_programming.dir/objects.a(main.cpp.obj):main.cpp:(.text$_ZNK6mysqlx4abi22r05Value5printERSo[_ZNK6mysqlx4abi22r05Value5printERSo]+0x21): undefined reference to `mysqlx::abi2::r0::DbDoc::print(std::ostream&) const'
    CMakeFiles\cpp_programming.dir/objects.a(main.cpp.obj):main.cpp:(.text$_ZNK6mysqlx4abi22r05Value5printERSo[_ZNK6mysqlx4abi22r05Value5printERSo]+0x2c): undefined reference to `mysqlx::abi2::r0::common::Value::print(std::ostream&) const'
    CMakeFiles\cpp_programming.dir/objects.a(main.cpp.obj):main.cpp:(.text$_ZNK6mysqlx4abi22r08internal14Warning_detail5printERSo[_ZNK6mysqlx4abi22r08internal14Warning_detail5printERSo]+0x87): undefined reference to `mysqlx::abi2::r0::string::Impl::to_utf8[abi:cxx11](mysqlx::abi2::r0::string const&)'
    CMakeFiles\cpp_programming.dir/objects.a(main.cpp.obj):main.cpp:(.rdata$_ZTCN6mysqlx4abi22r05ValueE0_NS1_6common5ValueE[_ZTCN6mysqlx4abi22r05ValueE0_NS1_6common5ValueE]+0x20): undefined reference to `mysqlx::abi2::r0::common::Value::print(std::ostream&) const'
    CMakeFiles\cpp_programming.dir/objects.a(main.cpp.obj):main.cpp:(.rdata$.refptr._ZTVN6mysqlx4abi22r05DbDocE[.refptr._ZTVN6mysqlx4abi22r05DbDocE]+0x0): undefined reference to `vtable for mysqlx::abi2::r0::DbDoc'
    collect2.exe: error: ld returned 1 exit status
    CMakeFiles\cpp_programming.dir\build.make:97: recipe for target 'cpp_programming.exe' failed
    CMakeFiles\Makefile2:74: recipe for target 'CMakeFiles/cpp_programming.dir/all' failed
    CMakeFiles\Makefile2:81: recipe for target 'CMakeFiles/cpp_programming.dir/rule' failed
    mingw32-make.exe[3]: *** [cpp_programming.exe] Error 1
    mingw32-make.exe[2]: *** [CMakeFiles/cpp_programming.dir/all] Error 2
    mingw32-make.exe[1]: *** [CMakeFiles/cpp_programming.dir/rule] Error 2
    mingw32-make.exe: *** [cpp_programming] Error 2
    Makefile:117: recipe for target 'cpp_programming' failed
    
    cmake_minimum_required(VERSION 3.15)
    project(cpp_programming)
    
    set(CMAKE_CXX_STANDARD 20)
    set(CMAKE_INCLUDE_CURRENT_DIR ON)
    set(MYSQL_CPPCONN_DIR "C:/Program Files/MySQL/MySQL Connector C++ 8.0")
    
    include_directories(${PROJECT_NAME} PUBLIC ${MYSQL_CPPCONN_DIR}/include)
    add_executable(${PROJECT_NAME} main.cpp)
    
    # Find the mysqlcppconn library.
    find_library(mysqlcppconn_LIB 
        mysqlcppconn8 
        HINTS ${MYSQL_CPPCONN_DIR}/lib/vs14
    
    # Static Libraries
    target_link_libraries(${PROJECT_NAME} PUBLIC ${mysqlcppconn_LIB})