【问题标题】:Read Mat Files in C++ in a Qt project在 Qt 项目中用 C++ 读取 Mat 文件
【发布时间】:2016-05-18 04:42:59
【问题描述】:

我正在尝试读取 Qt 项目中自己的 mat_file_read.cpp 中的 mat 文件,但遇到了问题。我的错误:

error lnk2019: unresolved external symbol matOpen referenced in function "int __cdecl read_mat_file(class QString)" (?read_mat_file@@YAHVQString@@@Z)"

在我的 project.pro 中,我包括:

INCLUDEPATH += C:\Program Files\MATLAB\MATLAB Production Server\R2015a\extern\include\
LIBS += -LC:\Program Files\MATLAB\MATLAB Production Server\R2015a\bin\win64
        -llibmx
        -llibmat
        -llibeng

在我的 cpp 文件的标题中:

#include <stdio.h>
#include <stdlib.h>
#include "mat.h"
#include "matrix.h"
#include <QString>
#include <QFileDialog>

在我的 mat_file_reader.cpp 中:

#include "read_mat_file.h"
int read_mat_file(QString file)
{

    // Variable definition
    int result;
    MATFile *pmat;

    if (file.isEmpty()) return 0;
    QByteArray ba = file.toLatin1();
    const char *rootFile = ba.data();
    pmat = matOpen(rootFile,"r");

    result = 0;

  return (result==0)?EXIT_SUCCESS:EXIT_FAILURE;

}

奇怪的是 Qt 编辑器正在识别“mat.h”中的函数。它在向我建议功能....

非常感谢。

【问题讨论】:

  • 我认为与此链接相同:mathworks.com/matlabcentral/answers/…
  • 至少我想你会想链接libmwsaveload
  • 感谢@Suever,但这不是问题!不过非常感谢。
  • 你能把你的read_mat_file函数的内容包含进去吗?
  • 这在 *nix 上编译没有问题,所以可能是特定于 Windows 的。从库中删除 lib 前缀有什么好处?

标签: c++ matlab qt mat-file


【解决方案1】:

我想可能是因为您在行尾忘记了\。 此外,也许您需要避免在路径中包含空格 ,或者尝试将其放入 $$quote(),如下所示:

INCLUDEPATH += $$quote(C:/Program Files/MATLAB/MATLAB Production Server/R2015a/extern/include)
LIBS += -L$$quote(C:/Program Files/MATLAB/MATLAB Production Server/R2015a/bin/win64) \
        -llibmx \
        -llibmat \
        -llibeng

【讨论】:

    【解决方案2】:

    最后我找到了一个解决方案,虽然我不明白为什么......我只更改了 Qt 的 project.pro 中的下一行:

    INCLUDEPATH += C:\Program Files\MATLAB\MATLAB Production Server\R2015a\extern\include\
    LIBS += -llibmx -LC:\librerias\matlab\extern\lib\win64\microsoft
    LIBS += -llibmat -LC:\librerias\matlab\extern\lib\win64\microsoft
    LIBS += -llibeng -LC:\librerias\matlab\extern\lib\win64\microsoft
    

    现在它正在工作....我觉得这很奇怪,但对我来说没关系。 :)

    非常感谢@Suever 的支持。

    【讨论】:

      猜你喜欢
      • 2018-07-04
      • 1970-01-01
      • 2013-07-02
      • 2015-06-30
      • 1970-01-01
      • 1970-01-01
      • 2020-11-03
      相关资源
      最近更新 更多