链接 Matlab C++库生成的问题
Problems Linking Matlab generated C++ Library
我想在我的C++代码中使用从 Matlab C/C++ Coder 生成的代码。
Matlab 以正确的方式创建文件,并附带一个 Makefile,以创建库。我想,我在 Makefile 中以正确的方式链接了库,但它仍然抛出错误:
/HOMES/~~/testMatlab/main.cpp:11:未定义的引用 'emxCreate_real_T(int, int)'
主.cpp:
1 #include<iostream>
2 #include"libMat.h"
3
4 using namespace std;
5
6 int main() {
7 double iHeightAll = 100;
8 double iWidthAll = 100;
9
10 emxArray_real_T *MatlabInput;
11 MatlabInput = emxCreate_real_T((int)iHeightAll,(int)iWidthAll);
12 return 0;
13 }
libMat.h
#ifndef __LIBMAT_H__
#define __LIBMAT_H__
/* Include files */
#include <stddef.h>
#include <stdlib.h>
#include "rtwtypes.h"
#include "libMat_types.h"
/* Function Declarations */
extern emxArray_real_T *emxCreateND_real_T(int numDimensions, int *size);
extern emxArray_real_T *emxCreateWrapperND_real_T(double *data, int numDimensions, int *size);
extern emxArray_real_T *emxCreateWrapper_real_T(double *data, int rows, int cols);
extern emxArray_real_T *emxCreate_real_T(int rows, int cols);
extern void emxDestroyArray_real_T(emxArray_real_T *emxArray);
extern double libMat(const emxArray_real_T *Pic, double height, double width);
extern void libMat_initialize();
extern void libMat_terminate();
#endif
制作文件:
1 CC=g++
2 CFLAGS= -g
3 OBJECTS= main.o
4 LIBS = -Llibs -lMat
5
6 # --- targets
7 all: main
8 main: $(OBJECTS)
9 $(CC) $(LIBS) -o main $(OBJECTS)
10
11 main.o: main.cpp
12 $(CC) $(CFLAGS) -Ilibs -c main.cpp
13
该库位于/libs 中,称为 libMat.a。所以这一切都应该是正确的
我是否必须以任何其他方式调用函数,因为它们是外部函数?libMat.h 文件当然是在 libMat 中实现的.cpp它是在链接的库中编译的。但是我无法更改 Matlab(libMat 等)生成的代码。
32/64 位东西的问题可能可以排除,因为我在构建自己的项目时在同一台机器上构建库。
怎么了?
Make it
main: $(OBJECTS)
$(CC) -o main $(OBJECTS) $(LIBS) # LIBS at the end
对于ld
库和静态库来说,这是一件有趣的事情:它只从.a
中挑选它认为在链接过程的那个阶段需要的那些.o
文件。如果后面的对象(在本例中main.o
)引入了新的依赖项,它不会返回以在早期的库中查找它们。
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 连接 MATLAB 和 Visual Studios 的问题
- 使用带有 MEX 包装器的帮助程序 C 文件从 MATLAB 2016 调用C++代码时出现问题
- 在 MATLAB 上使用 G++ 构建时出现问题
- 使用OpenCV Vector和MATLAB时遇到问题
- 在 Matlab 中将以下矩阵代码转换为 C++ 中的特征码时出现问题
- 链接 Matlab C++库生成的问题
- 在 Ubuntu 上使用 Mingw64 交叉编译 Matlab oct 文件时出现问题
- 使用C++特征和matlab mexFunction的矩阵乘法问题
- 在matlab上生成有限制的随机向量时出现问题
- Matlab到Opencv的转换问题
- MATLAB引擎Windows 7问题
- OpenCV中类似matlab的重塑的性能问题
- CUDA-Matlab 编译中C++指针的问题