使用Libtorch + OpenCV + QT Creator时出错

46qrfjad  于 2023-05-01  发布在  其他
关注(0)|答案(2)|浏览(220)

中有以下配置。轮廓文件

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

OpenCV绝对可以正常工作**,而不需要**“QMAKE_CXXFLAGS += -D_GLIBCXX_USE_CXX11_ABI=0"。但是,我得到了以下错误:

OpenCV在**“QMAKE_CXXFLAGS += -D_GLIBCXX_USE_CXX11_ABI=1”下也能正常工作。但它会抛出一组不同的错误:

大多数论坛建议Libtorch设置“QMAKE_CXXFLAGS += -D_GLIBCXX_USE_CXX11_ABI=0”,以避免出现上述错误。
有什么解决方案或一些解决方案可以解决这个问题?(我是Libtorch和Qt Creator的新手。)

3hvapo4f

3hvapo4f1#

也许OpenCV和Libtorch是用不同版本的GCC编译的(以及_GLIBCXX_USE_CXX11_ABI的不同值)。
试着自己重新编译它们,看看是否有变化。

d7v8vwbk

d7v8vwbk2#

问题是您下载了错误的ABI版本的LibTorch。看起来你下载了 * Pre-CXX 11 ABI* 版本的LibTorch,而OpenCV是用 * CXX 11 ABI* 编译的。因此,如果设置_GLIBCXX_USE_CXX11_ABI=0,OpenCV会抛出错误,如果设置_GLIBCXX_USE_CXX11_ABI=1,LibTorch会抛出错误。
从PyTorch官方网站下载CXX 11 ABI LibTorch,您不需要设置_GLIBCXX_USE_CXX11_ABI标志。

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

相关问题