代码之家  ›  专栏  ›  技术社区  ›  Jay

尝试使用Netbeans开发Qt应用程序时未定义SjLj

  •  0
  • Jay  · 技术社区  · 14 年前

    大家下午好,

    我正在开发我的第一个Qt应用程序。如果我试图将静态库与自己的代码链接起来,会出现很多错误,如下所示:

    H:/NetBeansProjects/CommonLib/aes.cpp:607: undefined reference to `__gxx_personality_sj0'
    H:/NetBeansProjects/CommonLib/aes.cpp:607: undefined reference to `_Unwind_SjLj_Register'
    H:/NetBeansProjects/CommonLib/aes.cpp:615: undefined reference to `_Unwind_SjLj_Resume'
    

    我的代码在不与Qt一起使用时编译和工作。 Qt程序在我试图链接我的库之前编译并运行。 Google ing显示,用于构建这两组代码的编译器可能不匹配。我将Netbeans环境设置为使用相同的工具链来构建两者,而不使用 改变。

    我使用的是Windows、NetBeans 6.9.1和最新的Qt。我已将编译器设置为使用 Qt提供了mingw编译器。

    有什么建议吗?

    1 回复  |  直到 14 年前
        1
  •  0
  •   Jay    14 年前

    找到了解决办法!

    它是在我以前的项目版本的库中链接的。

    我用Qt安装了一个新版本的Mingw编译器来解决一个问题。我在Netbeans中将新编译器设置为一个具有不同名称的工具链。

    我使用新的工具链对引用的项目进行了清理和构建。Netbeans将编译后的库存储在工具链中名为的目录中。它将旧版本的库保留在另一个为原始工具链命名的目录中。

    将项目引用添加到库时,Netbeans将导入到库的路径。如果更改了工具链(因此更改了指向库的路径),其他项目仍然指向旧代码。必须删除项目引用并重新添加它们。