Debian系统中如何将matlab编译后的代码集成到c++中
Posted
技术标签:
【中文标题】Debian系统中如何将matlab编译后的代码集成到c++中【英文标题】:how to integrate matlab compiled code into c++ in Debian system 【发布时间】:2016-12-07 16:27:33 【问题描述】:我一直在尝试使用 Matlab 编译器 SDK 将我的 Matlab 程序打包为 Debian 系统中的 C++ 共享库。我得到了包括test.c、test.h、test.so的文件夹(test是我的Matlab程序名),并且我已经在Debian系统中安装了Matlab_runtime。我已根据 readme.txt 中的要求设置变量 LD_LIBRARY_PATH_ 和 _ XAPPLRESDIR_ _ *( _ 将 MCR_ROOT 替换为目标计算机上安装 MATLAB 运行时的目录。 (1) 将环境变量 XAPPLRESDIR 设置为这个值: MCR_ROOT/v91/X11/app-defaults (2) 如果环境变量 LD_LIBRARY_PATH 未定义,则将其设置为以下字符串的串联: MCR_ROOT/v91/runtime/glnxa64: MCR_ROOT/v91/bin/glnxa64: MCR_ROOT/v91/sys/os/glnxa64: MCR_ROOT/v91/sys/opengl/lib/glnxa64_)* . 我编辑我的 main.cpp 包括 test.h。当我尝试使用 _ gcc main.cpp -o main_ 编译 main.cpp 时,出现如下错误: 在 main.cpp:2:0 包含的文件中: test.h:15:22: 胎儿错误: mclmcrrt.h: 没有这样的文件或目录 #include "mclmcrrt.h"
I know that mclmcrrt.h is in the package of Matlab_runtime, it means I failed to link to the library of Matlab_runtime. Anybody knows what should I do to make my main.cpp compile successfully? I tried two days to work on how to connect to the Matlab_runtime library, but still failed. I am a beginner to linux. Great thanks if anyone can help.
【问题讨论】:
【参考方案1】:这是一个编译问题,而不是链接问题。您的编译器不知道mclmcrrt.h
在哪里。请告诉它它在哪里帮助它找到它:
gcc -I<the_folder_where_mclmcrrt.h_lives_in> ...
【讨论】:
您好,非常感谢您的帮助,现在我的代码可以找到头文件,但是现在我遇到了新的问题如下: /tmp/cc8IP6a1.o: 在函数main': main.cpp:(.text+0xa): undefined reference to
mclmcrInitialize_proxy' main.cpp:(.text+0x19): 未定义引用mclInitializeApplication_860_proxy' main.cpp:(.text+0x48): undefined reference to
testInitialize' main.cpp:(.text+0x77 ): 未定义引用 mlfTest' main.cpp:(.text+0x98): undefined reference to
testTerminate' main.cpp:(.text+0x9d): 未定义引用 `mclTerminateApplication_proxy' collect2: 错误: ld 返回 1 退出状态
我知道这应该是 MCR 的链接问题。我的代码是:gcc -L/home/yuan/Documents/Matlab2016b/Matlab_runtime/v91/extern/lib/glnxa64 -L/home/yuan/Documents/Matlab2016b/Matlab_runtime/v91/bin/glnxa64 -I/home/yuan/文档/Matlab2016b/Matlab_runtime/v91/extern/include -I./test -lstdc++ -lgcc_s main.cpp -o main 。如何才能成功链接 MCR?
把 main.cpp 放在库之前。 main.cpp -I./test -lstdc++ -lgcc_s
您好 Shloim,感谢您的快速响应,我已经尝试了您的建议,但实际上并没有任何区别,并且给出了相同的错误。还有其他建议吗?以上是关于Debian系统中如何将matlab编译后的代码集成到c++中的主要内容,如果未能解决你的问题,请参考以下文章