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

标签 qt ubuntu qt-creator octave

我正在尝试在 Qt 项目中包含一些 Octave 矩阵/斜线。 我不知道如何让它发挥作用。

我想要一个 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: In function main': main.cpp:(.text.startup+0xce): undefined reference tooctave_value::octave_value(Matrix const&, MatrixType const&)' make: Leaving directory `/home/seb/TestOctave/TestOctave-build-desktop-Qt_4_8_1_in_PATH_System_Release' collect2: ld returned 1 exit status

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

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

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

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

最佳答案

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

我已经构建了 octave 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 希望它能帮助某人...

关于qt - QtCreator (ubuntu) 中的 C++ Octave 链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19908422/

相关文章:

c++ - QSqlDriver::close 使应用程序崩溃

android - 从命令行开发适用于 Android 的 Qt 应用程序

qt - 构建/部署项目测试时出错(套件 : Desktop Qt 5. 7.1 MSVC2015_64bit)执行步骤 "qmake"时

macos - 从 mac os 卸载 qt 4

C++ 类在另一个类中初始化,出现错误

ubuntu - Ansible 操作未定义错误

json - 向 Web 服务发出获取请求,获取 json 响应并在 Qt 中更新 GUI

qt5 - qtcreator Qt_5 未找到

maven - mvn clean install 没有 sudo 就不能工作

opengl - Xlib:显示 "GLX"上缺少扩展 ":0"