Tencent / ncnn

ncnn is a high-performance neural network inference framework optimized for the mobile platform
Other
20.54k stars 4.18k forks source link

windows端在Qt Creator中引入ncnn库,运行时报"platform.h"中的mutex错误 #5777

Closed zhahoi closed 6 days ago

zhahoi commented 1 week ago

detail | 详细描述 | 詳細な説明

在Qt Creator中引入ncnn库,在编译的时候出现如下错误,我有在网络中搜寻没找到解决答案,因此想提问有没有解决方法。 微信截图_20241115090509 微信截图_20241115090534

我使用自己编译的ncnn库在visual studio2019可以正常使用,但是在QT中却不行。此外,我也下载了ReadMe中相应的编译好的版本,依旧报错,希望有谁可以帮我解答一下。感谢。

wzyforgit commented 1 week ago

老哥是必须用.pro组织工程嘛?现在Qt官方都在推荐用cmake了,我这边用cmake是可以正常用的 看这个报错感觉是头文件没找全,你搜一下这几个函数在哪里

zhahoi commented 1 week ago

感谢,我研究一下

zhahoi commented 1 week ago

老哥是必须用.pro组织工程嘛?现在Qt官方都在推荐用cmake了,我这边用cmake是可以正常用的 看这个报错感觉是头文件没找全,你搜一下这几个函数在哪里

我尝试使用CMakeList.txt来编译程序,但是会报libprotobuf错误,请问能帮我给出一个mingw64 cmake编译ncnn的范例参考吗?

下面是部分的CMakeLists.txt的部分设置

set(Qt5_DIR C:/Qt/Qt5.14.2/5.14.2/mingw73_64/lib/cmake/Qt5)

find_package(Qt5 REQUIRED COMPONENTS Widgets)

set(OpenCV_DIR "C:/NCNN/opencv-3.4.10/opencv/build/x64/vc15/lib") find_package(OpenCV REQUIRED)

set(NCNN_DIR "C:/NCNN/ncnn-20240820-full-source/build/install/lib/cmake/ncnn")
find_package(NCNN REQUIRED)

set(PROTOBUF_DIR "C:/NCNN/protobuf-3.4.0/build-vs2019/install/cmake") find_package(Protobuf REQUIRED CONFIG PATHS ${PROTOBUF_DIR} NO_DEFAULT_PATH)

add_executable(yolov8Seg main.cpp yolov8seg.cpp yolov8seg.ui)

target_link_libraries(yolov8Seg Qt5::Widgets ${OpenCV_LIBS} ncnn libprotobuf)

![Uploading 微信截图_20241118123702.png…]()

zhahoi commented 1 week ago

老哥是必须用.pro组织工程嘛?现在Qt官方都在推荐用cmake了,我这边用cmake是可以正常用的 看这个报错感觉是头文件没找全,你搜一下这几个函数在哪里

微信截图_20241118123702 报错说找不到libprotobuf,应该是我的问题,不知道大大有没有好的修改建议。

wzyforgit commented 1 week ago

cmake里面把构建模型转换工具的部分设置为OFF就不会要求protobuf了,mingw构建ncnn我倒是没实践过,你可以去扒一下doc目录下的how to build文档,不过我本人推荐你在windows下构建项目还是用VC++那坨工具更好

zhahoi commented 1 week ago

cmake里面把构建模型转换工具的部分设置为OFF就不会要求protobuf了,mingw构建ncnn我倒是没实践过,你可以去扒一下doc目录下的how to build文档,不过我本人推荐你在windows下构建项目还是用VC++那坨工具更好

感谢大大的回复,我去尝试一下。

zhahoi commented 6 days ago

改成vc++哪个编译器可以用了