中有以下配置。轮廓文件
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的新手。)
2条答案
按热度按时间3hvapo4f1#
也许OpenCV和Libtorch是用不同版本的GCC编译的(以及_GLIBCXX_USE_CXX11_ABI的不同值)。
试着自己重新编译它们,看看是否有变化。
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