Qt和Matlab混合编程
Qt and Matlab Mixed Programming
当我将Qt与MATLAB混合编程一起使用时,我遇到了问题。我测试了一个示例,但它失败了。这是我的代码。首先是我的专业文件:
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = paintertest
TEMPLATE = app
SOURCES += main.cpp
mainwindow.cpp
test1.cpp
HEADERS += mainwindow.h
test1.h
mat.h
matrix.h
mclbase.h
mclcppclass.h
mclmcr.h
mclmcrrt.h
tmwtypes.h
MyAdde.h
engine.h
FORMS += mainwindow.ui
INCLUDEPATH += D:/program/engineering/armadillo-8.200.2/include
INCLUDEPATH += D:/program/engineering/sigpack
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/libBLAS_LAPACKwin32/ -lblas_win32_MT
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/libBLAS_LAPACKwin32/ -lblas_win32_MTd
else:unix: LIBS += -L$$PWD/libBLAS_LAPACKwin32/ -lblas_win32_MT
INCLUDEPATH += $$PWD/libBLAS_LAPACKwin32
DEPENDPATH += $$PWD/libBLAS_LAPACKwin32
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/libBLAS_LAPACKwin32/ -llapack_win32_MT
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/libBLAS_LAPACKwin32/ -llapack_win32_MTd
else:unix: LIBS += -L$$PWD/libBLAS_LAPACKwin32/ -llapack_win32_MT
INCLUDEPATH += $$PWD/libBLAS_LAPACKwin32
DEPENDPATH += $$PWD/libBLAS_LAPACKwin32
unix|win32: LIBS += -L$$PWD/libBLAS_LAPACKwin32/ -lliblapacke
INCLUDEPATH += $$PWD/libBLAS_LAPACKwin32
DEPENDPATH += $$PWD/libBLAS_LAPACKwin32
INCLUDEPATH += D:/program/engineering/matlabR2014a/extern/include
INCLUDEPATH += D:/program/engineering/matlabR2014a/extern/include/win32
LIBS +=-LD:/program/engineering/matlabR2014a/extern/lib/win32/microsoft -llibmx
LIBS +=-LD:/program/engineering/matlabR2014a/extern/lib/win32/microsoft -llibmat
LIBS +=-LD:/program/engineering/matlabR2014a/extern/lib/win32/microsoft -llibmex
LIBS +=-LD:/program/engineering/matlabR2014a/extern/lib/win32/microsoft -lmclmcr
LIBS +=-LD:/program/engineering/matlabR2014a/extern/lib/win32/microsoft -lmclmcrrt
LIBS +=-LD:/program/engineering/matlabR2014a/extern/lib/win32/microsoft -llibeng
#INCLUDEPATH += C:/Users/Administrator/Desktop/Qt/paintertest
#LIBS += -LC:/Users/Administrator/Desktop/Qt/paintertest -lMyAdde
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/./ -lMyAdde
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/./ -lMyAdde
else:unix: LIBS += -L$$PWD/./ -lMyAdde
INCLUDEPATH += $$PWD/.
DEPENDPATH += $$PWD/.
接下来是我的主窗口.h:
#include <QMainWindow>
#include <QPainter>
#include "test1.h"
#include <QVariant>
#include <armadillo>
#include <iostream>
#include "sigpack.h"
#include "MyAdde.h"
#include "mat.h"
#include "matrix.h"
#include "mclbase.h"
#include "mclcppclass.h"
#include "mclmcr.h"
#include "mclmcrrt.h"
#include "tmwtypes.h"
#include "engine.h"
接下来是我的主窗口.cpp:
double a=6;
double b = 9;
double c;
if(MyAddeInitialize()){
qDebug()<<"ok";
}
mwArray mwA(1, 1, mxDOUBLE_CLASS);
mwArray mwB(1, 1, mxDOUBLE_CLASS);
mwArray mwC(1, 1, mxDOUBLE_CLASS);
mwA.SetData(&a, 1);
mwB.SetData(&b, 1);
MyAdde(1, mwC, mwA, mwB);
c = mwC.Get(1, 1);
cout<<"c"<<c;
MyAddeTerminate();
mclTerminateApplication();
MyAdde.h/MyAdde.dll/MyAdde.lib是我的Matlab代码。这是我的 Matlab 代码:
function [ c ] = MyAdde( a, b )
c = a+b;
end
我使用 MATLAB 生成 MyAdde.h/MyAdde.dll/MyAdde.lib,并将此文件添加到我的 Qt pro 文件中。但是发生了一些错误。这是我的Qt错误:
C:UsersAdministratorDesktopQtpaintertestmainwindow.cpp:23: error: undefined reference to `MyAdde(int, mwArray&, mwArray const&, mwArray const&)'
我检查了MyAdde.h,发现了以下代码:
extern LIB_MyAdde_CPP_API void MW_CALL_CONV MyAdde(int nargout, mwArray& c, const mwArray& a, const mwArray& b);
我想这个问题是由const mwArray&和mwArray const&引起的。我不明白原因。我需要你的帮助!
这是一个链接器错误,所以编译得很好,但链接失败了
可能是这些东西错了
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/./ -lMyAdde
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/./ -lMyAdde
else:unix: LIBS += -L$$PWD/./ -lMyAdde
你想实现什么?如果你有一个调试和发布版本的MyAdde dll,第一行和第二行通常不应该相同
相关文章:
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 混合组合和继承的C++问题
- 在混合代码库中将C转换为C++时出现许多包含错误
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 模板元编程:如何将参数包组合成新的参数包
- Qt Q串行端口未编程设备未关闭
- D3D11-将混合权重和索引传递到顶点着色器
- 模板元编程 - 尝试实现维度分析
- Fortran 和 C++ 的混合编程:Fortran 不能调用C++子程序
- 混合编程 - 包括C++标头到 Fortran
- Qt和Matlab混合编程
- 在OpenGL中混合固定功能管道和可编程管道
- 在 "Code Blocks" IDE 中混合编程语言?
- C++和混合编程中指针的默认参数
- 将泛型编程与多态性混合在一起
- 模板元编程与经典名称重载混合
- c和c++混合编程中的字符串处理
- C++/Fortran 混合编程:对"_gfortran_reshape_r8"的未定义引用
- 我应该使用线程编程来混合2个音频流吗
- 在基类中混合使用虚函数和非虚函数是不好的编程实践吗?