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 -std=gnu++11

加了一条CXX_FLAGS1

build.make

CMakeFiles/3DMatch.dir/pointNetFeature.cpp.o: CMakeFiles/3DMatch.dir/flags.make
CMakeFiles/3DMatch.dir/pointNetFeature.cpp.o: ../pointNetFeature.cpp
	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/media/jerry/data/github/qt/3DMatch-cmake/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building CXX object CMakeFiles/3DMatch.dir/pointNetFeature.cpp.o"
	/usr/bin/c++  $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS1) -o CMakeFiles/3DMatch.dir/pointNetFeature.cpp.o -c /media/jerry/data/github/qt/3DMatch-cmake/pointNetFeature.cpp

CMakeFiles/3DMatch.dir/pointNetFeature.cpp.i: cmake_force
	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/3DMatch.dir/pointNetFeature.cpp.i"
	/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS1) -E /media/jerry/data/github/qt/3DMatch-cmake/pointNetFeature.cpp > CMakeFiles/3DMatch.dir/pointNetFeature.cpp.i

CMakeFiles/3DMatch.dir/pointNetFeature.cpp.s: cmake_force
	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/3DMatch.dir/pointNetFeature.cpp.s"
	/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS1) -S /media/jerry/data/github/qt/3DMatch-cmake/pointNetFeature.cpp -o CMakeFiles/3DMatch.dir/pointNetFeature.cpp.s

pointNetFeature.cpp就是使用libtorch的文件,将所有的CXX_FLAGS换成CXX_FLAGS1,最后成功了...不过这操作感觉太挫了,这样每次都要cmake之后都要重新这样改一下,但无奈实在不太会cmake,不知道具体该怎么操作。先在这里记录一下吧!不然下次忘了...用qmake感觉说不定也可以这样修改...

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值