【问题标题】:linking error while building tbb using mingw and at same time opencv runtime error使用mingw构建tbb时链接错误,同时opencv运行时错误
【发布时间】:2014-12-26 19:16:40
【问题描述】:

我想用MINGW +tbb + opencv 试过了。问题是我在运行 opencv 测试或某些程序时出错。 例如

test_job_automaton.exe - 未找到入口点

在动态链接库c:\tbb\build\windows_ia32_gcc_mingw4.9.1_debug\test_job_automaton.exe中找不到过程入口点__gxx_personality_v0。

LIBFR.exe - 未找到入口点

在动态链接库D:\Dropbox\face sdks\QTprojects\build-libfr-Desktop_Qt_5_4_0_MinGW_32bit-Release\release\tbb.dll中找不到程序入口点__gxx_personality_v0。

我在 tbb 目录中运行这个命令来构建它

mingw32-make arch=ai32 compiler=gcc -j4

它可以构建 3 个 dll,用这些 dll 构建 opencv 也可以,但运行不行

我试过 Mingw 4.9.1 和 4.8.2

我发现我应该尝试使用 g++,但是对于 windows,我尝试它时不支持它

我也试过用mingw32和mingw32-w64

我也尝试在 tbb 中构建 rml 时遇到相同的错误,因此您不必尝试安装 opencv 来找出问题。

要构建 rml,我使用这个命令

mingw32-make arch=ai32 compiler=gcc -j4 rml

我也尝试了 4 种不同版本的 tbb

有什么想法吗?

【问题讨论】:

标签: opencv mingw mingw32 tbb mingw-w64


【解决方案1】:

缺少__gxx_personality_v0 suggests (正如你提到的)程序必须以不同方式链接,例如通过 g++ 启用 C++ 异常处理并链接 C++ 运行时。所以真正的问题不在于 TBB,而在于您无法使用g++。通过我安装的 MinGW,它工作正常。如果您能够构建 TBB,它还假设 g++ 可以工作,因为它用于构建 TBB。

例如,你可以看到编译 TBB 和一个测试时 g++ 是如何使用的:

mingw32-make -rj compiler=gcc tbb test_task -C src

另外,我怀疑你永远需要 RML。

如果您确实无法启用 RTTI 和异常处理,您可以尝试构建不支持异常的 TBB:

mingw32-make -rj compiler=gcc clean tbb CXXFLAGS=-DTBB_USE_EXCEPTIONS=0

【讨论】:

  • 是的,我不需要 RML,但存在同样的错误,因此出于调试目的,帮助找出我的错误在哪里。当我运行 g++ -v 时,gcc 版本会出现,当我在独立版本 mingw32-w64 或使用 QT creator 下载的版本中运行它时也会出现。您使用哪个版本?我会试试那个测试
  • G++ 是 gcc,看到它说是 gcc 就可以了。只需尝试在您的构建命令中用 g++ 替换 gcc
  • 当我尝试你的提议时,没有规则让 test_task 出现
  • 尝试将 gcc 更改为 g++ 时出现以下错误 c:\tbb>mingw32-make -rj compiler=g++ rml mingw32-make -C ".\\build\\windows_unknown_g++_unknown_debug " -r -f ../../build /Makefile.rml cfg=debug mingw32-make[1]: 进入目录'c:/tbb/build/windows_unknown_g++_unknown_de bug' ../../build/ common.inc:95: *** "g++" 在 Windows 上不受支持。添加带有编译器特定设置的 build/wind ows.g++.inc 文件。 .停止。 mingw32-make [1]:离开目录'c:/tbb/build/windows_unknown_g++_unknown_deb ug'makefile:50:目标'rml'的配方失败mingw32-make:*** [rml]错误2
  • 我忘记在命令中添加“-Csrc”,因为单个测试是从 src/ 文件夹运行的
【解决方案2】:

问题是GnuPG的安装也有来自不同版本mingw的libstdc++-6.dll,它被自动添加到我的路径中,并且make使用这个dll而不是gcc目录中的那个,将它从路径使一切正常,谢谢您的帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 2020-08-25
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    • 2015-09-21
    • 2019-09-04
    相关资源
    最近更新 更多