Matlab C++ 集成,什么是 libting?
Matlab C++ integration, what is libting?
我已经写了一些c++代码,我想在下面的方法中与matlab集成https://www.mathworks.com/help/matlab/matlab_external/publish-interface-to-shared-c-library-on-linux.html
- 第一步:在 Linux 上生成接口进展顺利。
- 第二步:Define Missing Constructs 不是必须的,我的例子很简单,可以自动完成
- 构建接口是我遇到问题的地方。
这是我的 matlab 代码:
clc;
clibgen.generateLibraryDefinition(fullfile("testing.h"),...
"Libraries", fullfile("testing.so"),...
"PackageName", "integrationTest",...
"ReturnCArrays",false,... % treat output as MATLAB arrays
"Verbose",true)
defineintegrationTest;
summary(defineintegrationTest)
build(defineintegrationTest)
最后一行 build(defineintegrationTest) 引发了错误。这是完整的输出:
Using g++ compiler. Generated definition file
defineintegrationTest.mlx and data file 'integrationTestData.xml'
contain definitions for 1 constructs supported by MATLAB. Build using
build(defineintegrationTest).
MATLAB Interface to integrationTest Library
Functions int32 clib.integrationTest.addingNumbers(int32,int32)
Building interface file 'integrationTestInterface.so'. Error using
clibgen.internal.buildHelper (line 62) Build failed with error:
'/usr/bin/ld: cannot find -lting collect2: error: ld returned 1 exit
status '.
Error in clibgen.LibraryDefinition/build (line 1297)
clibgen.internal.buildHelper(obj, obj.LibraryInterface, '', directBuild);
Error in myIntegrationTest (line 11) build(defineintegrationTest)
错误的主要部分似乎是 cannot find -lting collect2: error: ld returned 1 exit status ' 部分。我使用以下行制作了 testing.so:
g++ -o testing.o -O3 testing.cpp
g++ -shared -o testing.so testing.o
我这里的测试例子超级简单。这是 cpp 文件。
#include "testing.h"
int addingNumbers(int a, int b){
return a + b;
}
这是头文件
#ifndef TESTING_ /* Include guard */
#define TESTING_
int addingNumbers(int a, int b);
#endif
我也尝试过使用 g++ 创建带有 -lting 标志的共享库,但得到了同样的错误。
g++ -shared -o testing.so testing.o -lting
有谁知道这个库是什么或者我可以在哪里安装它?在查找有关 -lting 或 libting 或 matlab ting 的内容时,我得到 google 结果实际上 return 0 结果。
原来你应该把你的.so文件的前三个字母设为lib。所以我将 testing.so 更改为 libtesting.so 并重新运行相同的步骤并且它起作用了。感谢 Cris Luengo 的帮助,他回答了这个问题。
我已经写了一些c++代码,我想在下面的方法中与matlab集成https://www.mathworks.com/help/matlab/matlab_external/publish-interface-to-shared-c-library-on-linux.html
- 第一步:在 Linux 上生成接口进展顺利。
- 第二步:Define Missing Constructs 不是必须的,我的例子很简单,可以自动完成
- 构建接口是我遇到问题的地方。
这是我的 matlab 代码:
clc;
clibgen.generateLibraryDefinition(fullfile("testing.h"),...
"Libraries", fullfile("testing.so"),...
"PackageName", "integrationTest",...
"ReturnCArrays",false,... % treat output as MATLAB arrays
"Verbose",true)
defineintegrationTest;
summary(defineintegrationTest)
build(defineintegrationTest)
最后一行 build(defineintegrationTest) 引发了错误。这是完整的输出:
Using g++ compiler. Generated definition file defineintegrationTest.mlx and data file 'integrationTestData.xml' contain definitions for 1 constructs supported by MATLAB. Build using build(defineintegrationTest).
MATLAB Interface to integrationTest Library
Functions int32 clib.integrationTest.addingNumbers(int32,int32)
Building interface file 'integrationTestInterface.so'. Error using clibgen.internal.buildHelper (line 62) Build failed with error: '/usr/bin/ld: cannot find -lting collect2: error: ld returned 1 exit status '.
Error in clibgen.LibraryDefinition/build (line 1297) clibgen.internal.buildHelper(obj, obj.LibraryInterface, '', directBuild);
Error in myIntegrationTest (line 11) build(defineintegrationTest)
错误的主要部分似乎是 cannot find -lting collect2: error: ld returned 1 exit status ' 部分。我使用以下行制作了 testing.so:
g++ -o testing.o -O3 testing.cpp
g++ -shared -o testing.so testing.o
我这里的测试例子超级简单。这是 cpp 文件。
#include "testing.h"
int addingNumbers(int a, int b){
return a + b;
}
这是头文件
#ifndef TESTING_ /* Include guard */
#define TESTING_
int addingNumbers(int a, int b);
#endif
我也尝试过使用 g++ 创建带有 -lting 标志的共享库,但得到了同样的错误。
g++ -shared -o testing.so testing.o -lting
有谁知道这个库是什么或者我可以在哪里安装它?在查找有关 -lting 或 libting 或 matlab ting 的内容时,我得到 google 结果实际上 return 0 结果。
原来你应该把你的.so文件的前三个字母设为lib。所以我将 testing.so 更改为 libtesting.so 并重新运行相同的步骤并且它起作用了。感谢 Cris Luengo 的帮助,他回答了这个问题。