启动程序时遇到问题:
致命错误:检测到程序和库构建版本之间不匹配
该库使用3.0(wchar_t,编译器与C ++ ABI 1010,wx容器,兼容2.8),
你的程序使用3.0(wchar_t,编译器使用C ++ ABI 1009,wx容器,兼容2.8)。
我的cmake设置:
cmake_minimum_required(VERSION 3.0)
project(simple)
set(CMAKE_BUILD_TYPE Release)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${wxWidgets_CXX_FLAGS} -Wall -std=c++14")
find_package(wxWidgets COMPONENTS net gl core base)
include("${wxWidgets_USE_FILE}")
add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME} ${wxWidgets_LIBRARIES})
wxWidgets 3.0.3的版本。
答案 0 :(得分:2)
您可以尝试添加到您的程序
#define __GXX_ABI_VERSION 1010
或只是
sudo apt-get purge wx2.8-headers wx2.9-headers
答案 1 :(得分:2)
如果您希望拥有__GXX_ABI_VERSION=1002
,请为GCC指定-fabi-version=2
。为此,请在您的CMakeLists.txt中添加:
add_definitions(-fabi-version=2)
与手动重新定义__GXX_ABI_VERSION
相比,这是首选方法,因为这样做会违反C ++标准并可能导致未定义的行为。
注意:在未来的GCC版本中,-fabi-version=2
可能并不总是与__GXX_ABI_VERSION=1002
相对应。编译并运行此快速C ++程序进行检查:
#include <iostream>
int main(void) {
std::cout << "__GXX_ABI_VERSION=" << __GXX_ABI_VERSION << std::endl;
return 0;
}
以这种方式编译:
g++ -fabi-version=2 -o check_fabi_version check_fabi_version.cpp
以这种方式运行:
./check_fabi_version
从GCC 8.2.0开始的示例输出:
__GXX_ABI_VERSION=1002
答案 2 :(得分:0)
我安装了两个版本的wxWidgets。我删除了其中一个,效果很好。