QtCreator(ubuntu)中的C ++ Octave链接错误

时间:2013-11-11 14:11:39

标签: qt ubuntu qt-creator octave

我试图在Qt项目中包含一些八度矩阵/ sloving。 我无法弄清楚如何使它发挥作用。

我想有一个Qt项目,用g ++构建并使用QtCreator。 我从源代码中用g ++构建了Octave。 似乎我可以让Matrix工作,但是一旦我使用octave_value,链接器似乎无法工作(我的最终目标是能够使用feval和矩阵)。 这是我的main.cpp:

#include <iostream>
#include <oct.h>
#include <octave.h>
#include <parse.h>

int
main (void)
{
    Matrix a_matrix = Matrix (3, 3);

    std::cout << a_matrix;
    //octave_value valeur(a_matrix);

    return 0;
}

我的.pro(我知道它有点乱......):

QT       += core gui

TARGET = TestOctave
TEMPLATE = app

INCLUDEPATH += $$PWD/../../octave-3.6.4
INCLUDEPATH += $$PWD/../../octave-3.6.4/src
INCLUDEPATH += $$PWD/../../octave-3.6.4/liboctave
INCLUDEPATH += $$PWD/../../octave-3.6.4/libcruft/misc/
INCLUDEPATH += $$PWD/../../octave-3.6.4/liboctave/.libs
LIBS += -L$$PWD/../../octave-3.6.4/liboctave/.libs/ -loctave

SOURCES += main.cpp

所以像这样我得到这样的输出:  0 0 0  0 0 0  0 0 0

但如果我取消注释“octave_value valeur(a_matrix);” main.cpp中的行我得到了这个链接错误:

  

main.o:函数main': main.cpp:(.text.startup+0xce): undefined reference to octave_value :: octave_value(Matrix const&amp;,MatrixType)   const&amp;)'make:离开目录   `/家庭/ SEB / TestOctave / TestOctave - 构建 - 桌面Qt_4_8_1_in_PATH_的系统的_Release”   collect2:ld返回1退出状态

问题是,当我构建它时抛出:

  

mkoctfile --link-stand-alone ./TestOctave/TestOctave/main.cpp -o   testOctave

它可以正确构建,链接和执行。

总而言之,我的目标是能够在QtCreator项目中使用矩阵feval()。 有谁知道我怎么能让它工作? 感谢

1 个答案:

答案 0 :(得分:1)

好的,我回答了我的问题,所以我发现这可能对某人有所帮助..

我已经构建了八度音阶3.6.4但是因为没有创建错误而没有创建octinterp.so ... 我最终使用了安装在包gnu octave中的库。

所以这是工作代码:( main.cpp几乎保持不变):

QT       += core gui

TARGET = TestOctave
TEMPLATE = app

INCLUDEPATH += /usr/include/octave-3.2.4/
INCLUDEPATH += $$PWD/../../../../usr/lib/octave-3.2.4

DEPENDPATH += $$PWD/../../../../usr/lib/octave-3.2.4

unix:!macx:!symbian: LIBS += -L$$PWD/../../../../usr/lib/octave-3.2.4/ -loctave
unix:!macx:!symbian: LIBS += -L$$PWD/../../../../usr/lib/octave-3.2.4/ -loctinterp
unix:!macx:!symbian: LIBS += -L$$PWD/../../../../usr/lib/octave-3.2.4/ -lcruft


SOURCES += main.cpp

HEADERS  +=

FORMS    += mainwindow.ui

OTHER_FILES += \
    ../../../../usr/lib/octave-3.2.4/liboctinterp.so.3.2.4

总而言之,我缺少liboctinterp.so和libcruft.so 希望它有所帮助...