Libtorch在Qt中使用的各种问题:slot和Qt的slot函数冲突,CXX_FLAGS中的-D_GLIBCXX_USE_CXX11_ABI=1引起的undefined问题

1.slot和Qt的slot函数冲突

https://github.com/pytorch/pytorch/issues/19405

解决办法就是在libtorch的库前后

#undef slots
#include "torch/torch.h"
#def slots Q_SLOTS

实测有用

2.CXX_FLAGS中的-D_GLIBCXX_USE_CXX11_ABI=1引起的undefined问题

https://github.com/pytorch/pytorch/issues/23301

大概理解了一下,就是两个库需要的g++参数不同,不能一起操作

因为我单独把有libtorch的操作都写到一个cpp中去了,用的也是cmake,没有用qmake

最后修改了flags.make和build.make两个文件

flags.make

# compile CXX with /usr/bin/c++
CXX_FLAGS =      -march=native -msse4.2 -mfpmath=sse  -fPIC -D_GLIBCXX_USE_CXX11_ABI=1 -std=gnu++11
CXX_FLAGS1 =      -march=native -msse4.2 -mfpmath=sse  -fPIC -D_GLIBCXX_USE_CXX11_ABI=0 
ERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ -DTORCH_API_INCLUDE_EXTENSION_H '-DPYBIND11_COMPILER_TYPE="_gcc"' '-DPYBIND11_STDLIB="_libstdcpp"' '-DPYBIND11_BUILD_ABI="_cxxabi1011"' -DTORCH_EXTENSION_NAME=sparse_conv_ext -D_GLIBCXX_USE_CXX11_ABI=0 -gencode=arch=compute_86,code=compute_86 -gencode=arch=compute_86,code=sm_86 FAILED: /tmp/pip-install-2orq3ccd/mmdet3d_bedd1fa9197349c4b23a2ae1df261803/build/temp.linux-x86_64-cpython-38/mmdet3d/ops/spconv/src/indice_cuda.o /usr/local/cuda/bin/nvcc -DWITH_CUDA -I/tmp/pip-install-2orq3ccd/mmdet3d_bedd1fa9197349c4b23a2ae1df261803/mmdet3d/ops/spconv/include -I/root/miniconda3/envs/open-mmlab/lib/python3.8/site-packages/torch/include -I/root/miniconda3/envs/open-mmlab/lib/python3.8/site-packages/torch/include/torch/csrc/api/include -I/root/miniconda3/envs/open-mmlab/lib/python3.8/site-packages/torch/include/TH -I/root/miniconda3/envs/open-mmlab/lib/python3.8/site-packages/torch/include/THC -I/usr/local/cuda/include -I/root/miniconda3/envs/open-mmlab/include/python3.8 -c -c /tmp/pip-install-2orq3ccd/mmdet3d_bedd1fa9197349c4b23a2ae1df261803/mmdet3d/ops/spconv/src/indice_cuda.cu -o /tmp/pip-install-2orq3ccd/mmdet3d_bedd1fa9197349c4b23a2ae1df261803/build/temp.linux-x86_64-cpython-38/mmdet3d/ops/spconv/src/indice_cuda.o -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr --compiler-options ''"'"'-fPIC'"'"'' -w -std=c++14 -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ -DTORCH_API_INCLUDE_EXTENSION_H '-DPYBIND11_COMPILER_TYPE="_gcc"' '-DPYBIND11_STDLIB="_libstdcpp"' '-DPYBIND11_BUILD_ABI="_cxxabi1011"' -DTORCH_EXTENSION_NAME=sparse_conv_ext -D_GLIBCXX_USE_CXX11_ABI=0 -gencode=arch=compute_86,code=compute_86 -gencode=arch=compute_86,code=sm_86 /tmp/pip-install-2orq3ccd/mmdet3d_bedd1fa9197349c4b23a2ae1df261803/mmdet3d/ops/spconv/src/indice_cuda.cu:16:10: fatal error: spconv/indice.cu.h: No such file or directory 16 | #include <spconv/indice.cu.h> | ^~~~~~~~~~~~~~~~~~~~ compilation terminated.
03-26
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值