在Windows 7的Qt Creator项目中链接MLPACK, Armadillo和LAPACK/BLAS
Linking MLPACK, Armadillo and LAPACK/BLAS in Qt Creator Project in Windows 7
我正试图将MLPACK与我的项目集成在Qt Creator(使用MinGW作为编译器)中,我不断获得与LAPACK和Armadillo相关的链接错误。我自己编译了LAPACK和BLAS,并运行了一个测试脚本,一切似乎都很好。此外,我使用启用了LAPACK和BLAS的CMake-gui编译了Armadillo(没有包装器),example1.cpp编译和运行没有问题。MLPACK编译并找到所有需要的依赖项。
我的.pro文件有以下内容:
## Armadillo
INCLUDEPATH += $$PWD/MLPACK/dependencies/armadillo/include
## LAPACK
unix|win32: LIBS += -L$$PWD/MLPACK/dependencies/lapack/ -llapack
## BLAS
unix|win32: LIBS += -L$$PWD/MLPACK/dependencies/blas/ -lblas
## LibXML2
unix|win32: LIBS += -L$$PWD/MLPACK/dependencies/libxml2/lib/ -lxml2
INCLUDEPATH += $$PWD/MLPACK/dependencies/libxml2/include
DEPENDPATH += $$PWD/MLPACK/dependencies/libxml2/include
unix|win32-g++: PRE_TARGETDEPS += $$PWD/MLPACK/dependencies/libxml2/lib/libxml2.a
## Boost
unix|win32: LIBS += -L$$PWD/../../boost_1_54_0/stage/lib/ -lboost_program_options-mgw48-mt-1_54
INCLUDEPATH += $$PWD/../../boost_1_54_0
DEPENDPATH += $$PWD/../../boost_1_54_0
unix|win32-g++: PRE_TARGETDEPS += $$PWD/../../boost_1_54_0/stage/lib/libboost_program_options-mgw48-mt-1_54.a
unix|win32: LIBS += -L$$PWD/../../boost_1_54_0/stage/lib/ -lboost_random-mgw48-mt-1_54
unix|win32-g++: PRE_TARGETDEPS += $$PWD/../../boost_1_54_0/stage/lib/libboost_random-mgw48-mt-1_54.a
unix|win32: LIBS += -L$$PWD/../../boost_1_54_0/stage/lib/ -lboost_unit_test_framework-mgw48-mt-1_54
unix|win32-g++: PRE_TARGETDEPS += $$PWD/../../boost_1_54_0/stage/lib/libboost_unit_test_framework-mgw48-mt-1_54.a
## MLPACK
unix|win32: LIBS += -L$$PWD/MLPACK/lib/ -lmlpack
INCLUDEPATH += $$PWD/MLPACK/include
DEPENDPATH += $$PWD/MLPACK/include
unix|win32-g++: PRE_TARGETDEPS += $$PWD/MLPACK/lib/libmlpack.a
当我编译我的项目时,我得到这个:
C:/Workspace/OffLineSorter/MLPACK/lib//libmlpack.a(pca.cpp.obj):pca.cpp:(.text$_ZN4arma6auxlib11svd_dc_econIdNS_3MatIdEEEEbRNS2_IT_EERNS_3ColIS4_EES6_RKNS_4BaseIS4_T0_EE[__ZN4arma6auxlib11svd_dc_econIdNS_3MatIdEEEEbRNS2_IT_EERNS_3ColIS4_EES6_RKNS_4BaseIS4_T0_EE]+0x24f): undefined reference to `dgesdd_'
Makefile.Debug:252: recipe for target 'debugOffLineSorter.exe' failed
C:/Workspace/OffLineSorter/MLPACK/lib//libmlpack.a(pca.cpp.obj):pca.cpp:(.text$_ZN4arma6auxlib8svd_econIdNS_3MatIdEEEEbRNS2_IT_EERNS_3ColIS4_EES6_RKNS_4BaseIS4_T0_EEc[__ZN4arma6auxlib8svd_econIdNS_3MatIdEEEEbRNS2_IT_EERNS_3ColIS4_EES6_RKNS_4BaseIS4_T0_EEc]+0x286): undefined reference to `dgesvd_'
C:/Qt/Qt5.3.0/Tools/mingw482_32/bin/../lib/gcc/i686-w64-mingw32/4.8.2/../../../../i686-w64-mingw32/bin/ld.exe: C:/Workspace/OffLineSorter/MLPACK/lib//libmlpack.a(pca.cpp.obj): bad reloc address 0x286 in section `.text$_ZN4arma6auxlib8svd_econIdNS_3MatIdEEEEbRNS2_IT_EERNS_3ColIS4_EES6_RKNS_4BaseIS4_T0_EEc[__ZN4arma6auxlib8svd_econIdNS_3MatIdEEEEbRNS2_IT_EERNS_3ColIS4_EES6_RKNS_4BaseIS4_T0_EEc]'
collect2.exe: error: ld returned 1 exit status
mingw32-make[1]: *** [debugOffLineSorter.exe] Error 1
mingw32-make[1]: Leaving directory 'C:/Workspace/build-OffLineSorter-Desktop_Qt_5_3_0_MinGW_32bit-Debug'
mingw32-make: *** [debug] Error 2
Makefile:34: recipe for target 'debug' failed
知道我可能做错了什么吗?谢谢你的帮助!
您可以尝试使用最近发布的mlpack 1.0.10吗?我重写了CMake FindArmadillo脚本,以便它正确地检测何时没有使用ARMA_USE_WRAPPER(这在您的情况下是真的)并直接链接到LAPACK或BLAS。
它没有在您的特定设置(MinGW + Win7)中进行测试,因为我还没有机会设置编译环境,但我认为它应该工作得更好。
你也可以参考mlpack邮件列表档案;过去有一些关于使用MinGW的讨论:https://mailman.cc.gatech.edu/pipermail/mlpack/
谢谢,瑞安
相关文章:
- 有可能在Armadillo中复制MATLAB circshift方法吗
- 如何为 mlpack 的 kmeans 构建 HamerlyKmeans 对象
- 矩阵rowSums()与colSums(()在R与Rcpp与Armadillo中的效率
- mlpack :在 FFN 中索引越界<>
- Armadillo正在为共享的lapack库获取未定义的参考
- 如何在Visual Studio中并行化armadillo
- r-(C ,Armadillo)从矩阵中更换列矢量的一部分
- Armadillo是否支持布尔和8位型矩阵和立方体
- 使用 mlpack 时 Cython 模块中的未定义符号
- R- armadillo c :用其他两个向量对向量进行排序
- 将矩阵划分为Armadillo中的载体
- 如何在 Cython 中使用 mlpack
- 将行附加到Armadillo .mat文件
- 使用高级构造函数将阵列转换为Armadillo Vec
- C :结构内部的Armadillo矩阵
- C 中矩阵的动态名称(Armadillo库)
- Armadillo节省双精度ASCII
- 是c armadillo find()输出排序
- 模板实例化与Armadillo和Boost :: Numeric :: Odeint
- 在Windows 7的Qt Creator项目中链接MLPACK, Armadillo和LAPACK/BLAS