7

我在 .pro 文件中有以下配置

TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt
CONFIG += thread

SOURCES += main.cpp

INCLUDEPATH += /usr/local/include/opencv4
LIBS += -L/usr/local/lib/
LIBS += -lopencv_core
LIBS += -lopencv_highgui
LIBS += -lopencv_imgproc
LIBS += -lopencv_videoio

QMAKE_CXXFLAGS += -D_GLIBCXX_USE_CXX11_ABI=0

INCLUDEPATH += /path/to/libtorch/include
INCLUDEPATH += /path/to/libtorch/include/torch/csrc/api/include
LIBS += -L/path/to/libtorch/lib
LIBS += -ltorch -lc10

没有“QMAKE_CXXFLAGS += -D_GLIBCXX_USE_CXX11_ABI= 0 ”, OpenCV 工作得非常好。但是,有了这个,我得到以下错误:

在此处输入图像描述

OpenCV 也适用“QMAKE_CXXFLAGS += -D_GLIBCXX_USE_CXX11_ABI= 1 ”。但它引发了一组不同的错误:

在此处输入图像描述

大多数论坛都建议为 Libtorch设置“QMAKE_CXXFLAGS += -D_GLIBCXX_USE_CXX11_ABI= 0 ”,以避免上述错误。

什么可能是解决此问题的解决方案或一些解决方案?(我是 Libtorch 和 Qt Creator 的新手。)

4

2 回答 2

2

也许 OpenCV 和 Libtorch 是用不同版本的 GCC 编译的(以及不同的 _GLIBCXX_USE_CXX11_ABI 值)。

尝试自己重新编译它们,看看情况是否会发生变化。

于 2019-07-29T16:56:39.630 回答
0

问题是您下载了错误的 ABI 版本的 LibTorch。看起来您下载了LibTorch 的Pre-CXX11 ABI版本,并且 OpenCV 是使用CXX11 ABI编译的。所以如果你设置_GLIBCXX_USE_CXX11_ABI=0了,OpenCV 会抛出错误,如果你设置_GLIBCXX_USE_CXX11_ABI=1了,LibTorch 会抛出错误。

从 PyTorch 官网下载 CXX11 ABI LibTorch,你不需要设置_GLIBCXX_USE_CXX11_ABI标志。

关于GCC的双重ABI问题,见https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html

于 2021-04-21T13:38:58.673 回答