matlab 动态库 二次调用,LINUX matlab编译动态库调用崩溃
这是我的.m文件,很简单,即返回两个数的和。
function [ z ] = myadd( x,y )
%UNTITLED Summary of this function goes here
% Detailed explanation goes here
z=x+y;
end
我用这条语编译生成.so。
mcc -W cpplib:libmyadd -T link:lib myadd.m
下面是我的C++代码
#include "libmyadd.h"
#include
#include "mclcppclass.h"
#include
#include
#include
#define lpath "/home/matlab/test/add.log"
void * testll(void *arg);
int main()
{
sleep(10*60);
pthread_t ThreadId=0;
pthread_create(&ThreadId, NULL, testll,NULL);
while(1)
{
sleep(6);
}
return 0;
}
void * testll(void *arg)
{
pthread_detach(pthread_self());
double a=10.23,b=19.23;
double sumc=0;
int nargout = 1;
for(;;)
{
try{
libmyaddInitialize();
mwArray sum(1,1,mxDOUBLE_CLASS);
mwArray c1(1,1,mxDOUBLE_CLASS);
mwArray c2(1,1,mxDOUBLE_CLASS);
c1(1,1).SetData(&a,1);
c2(1,1).SetData(&b,1);
myadd(nargout,sum,c1,c2);
sum(1,1).GetData(&sumc,1);
//printf("%.4f\n",sumc);
char cmd[1024];
memset(&cmd,0,sizeof(cmd));
sprintf(cmd,"echo sumc=%.4f >>%s",sumc,lpath);
printf("%s\n",cmd);
system(cmd);
libmyaddTerminate();
}catch(...)
{
char cmd[1024];
memset(cmd,0,sizeof(cmd));
sprintf(cmd,"echo core...... >> %s\n",lpath);
system(cmd);
}
sleep(2);
}
}
为了方便查阅问题,我将X+Y的结果值打印到add.log日志文件中,首次执行我的文件 ,调用MATLAB的SO没有问题,结果也能正常打印,每次当我重起机子之后,我将这个可执行文件放在/ETC/RC。LOCAL目录下,让他后台运行,随机启动,可每次都直接进入CATCH中,意思就是崩溃,之前我想是因为LINUX刚启动,也许还有些插件之类没加载完,我就将程序延时10分钟再执行,可还是一样的结果,直接崩溃,这问题已经困扰我一周了,希望遇到的大家给想想办法 ,谢谢大家了。
matlab 动态库 二次调用,LINUX matlab编译动态库调用崩溃相关推荐
- linux查看动态库导出的符号,Linux下控制动态库导出
在Linux中动态库的确给程序带来了良好的扩充性,并减少了内存的使用量,但这是有代价的.例如: #include Int main(int argc, char *argv[]) { Printf(& ...
- linux中查询动态库版本的命令,linux 程序、动态库、静态库内部添加版本号和编译时间详解...
给程序和库添加版本号和库,有利于维护和升级. 当然你可以在文件名上体现,比如有个程序叫 yun,文件名写为 yun_1.0.2,但这个需要每次手动维护,而且不能100%确保当前程序就是那个版本.所以, ...
- 算术编码 matlab程序,实验二算术编码及MATLAB实现.doc
实验二算术编码及MATLAB实现 武夷学院实验报告 课程名称: 多媒体通信技术 项目名称: 算术编码及MATLAB实现 姓名: _专业:__通信工程___ 班级: 学号:____同组成员_无_ 实验准 ...
- Linux:编译动态库时遇到的错误relocation R_X86_64_32 against `a local symbol'
编译动态库时遇到如下错误: ... ... relocation R_X86_64_32 against `a local symbol' can not be used when making a ...
- Linux环境编译动态库和静态库总结
首先总结静态库的编译步骤. 1 先基于.cpp或者.c文件生成对应的.o文件 2将几个.o文件 使用ar -cr命令 生成libname.a文件 libname.a 为静态库, name 为静态库的名 ...
- gcc生成dll linux,gcc编译dll和调用dll
方法一: 共有三个文件:print.h,print.c,test.c *************************************************************** p ...
- 完美解决Linux环境编译ffmpeg库
背景说明 项目功能实现需要在Linux下编译出可用的FFmpeg库.FFmpeg在编译过程中是需要链接其它三方库的,比如x265 x265等,否则可能会造成功能不全(如程序接口返回找不到H264编码器 ...
- linux ndk编译静态库,Android开发教程:NDK编译静态库失败
Android---NDK编译静态库失败 Android.mk 相关编译文件: include $(CLEAR_VARS) LOCAL_MODULE := libdvnca LOCAL_SRC_ ...
- 在linux下编译boost库【搜集】
http://www.cnblogs.com/flywuya/archive/2010/11/30/1892483.html 编译环境 操作系统:SUSE linux Enterprise Serve ...
最新文章
- poj1603(Flody算法)
- mysql主从复制延时性问题_MySQL主从同步延迟原因及解决办法
- 【Linux入门到精通系列讲解】Ubuntu下使用gcc编译并运行C程序
- 【Machine Learning实验2】 Logistic Regression求解classification问题
- JavaScript——易班优课YOOC课群在线测试禁止查卷解决方案
- GDCM:gdcm::UIDs的测试程序
- CSS3知识点整理(三)----变形与动画
- Go语言 读写锁互斥锁原理剖析(2)
- scss里的继承操作符@extend
- LeetCode 123. 买卖股票的最佳时机 III(动态规划)
- 从外卖员到程序员,自学3年终于转行成功,三面“拿下”拼多多,把经历分享给你们!
- cmos和ttl_【转】CMOS与TTL电路的区别
- 游戏化设计:平台用户激励系统——互联网平台建设...
- display:inline-block 间隙
- Socket编程入门(一)实现简单的Socket实例
- 绿坝即将登场,好戏就要开演
- 注册ActiveX控件时DllRegisterServer调用失败的解决方法
- Xshell6 Xftp6 官方永久免费版下载
- 一文带你读懂 Java Agent 内存马
- 张学友 - 蓝雨(粤)
热门文章
- C# 多页打印简单实现
- 图像的色彩类别,灰度化,二值化
- c++清空串口缓冲区
- 汇编语言不带冒号标号的用法
- IOS15自定义UICollectionView的使用
- $.post请求的参数在后台代码中得到为null_vue中Axios的封装和API接口的管理
- arc.archives.class.php关于分页错位怎么修改,解决织梦分页错位的办法
- python的数据类型_Python支持哪些数据类型
- imagecomposition工程分析
- Android开发之在任意Activity在广点通页面添加自定义布局在穿山甲页面添加任意布局