这是我的.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编译动态库调用崩溃相关推荐

  1. linux查看动态库导出的符号,Linux下控制动态库导出

    在Linux中动态库的确给程序带来了良好的扩充性,并减少了内存的使用量,但这是有代价的.例如: #include Int main(int argc, char *argv[]) { Printf(& ...

  2. linux中查询动态库版本的命令,linux 程序、动态库、静态库内部添加版本号和编译时间详解...

    给程序和库添加版本号和库,有利于维护和升级. 当然你可以在文件名上体现,比如有个程序叫 yun,文件名写为 yun_1.0.2,但这个需要每次手动维护,而且不能100%确保当前程序就是那个版本.所以, ...

  3. 算术编码 matlab程序,实验二算术编码及MATLAB实现.doc

    实验二算术编码及MATLAB实现 武夷学院实验报告 课程名称: 多媒体通信技术 项目名称: 算术编码及MATLAB实现 姓名: _专业:__通信工程___ 班级: 学号:____同组成员_无_ 实验准 ...

  4. 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 ...

  5. Linux环境编译动态库和静态库总结

    首先总结静态库的编译步骤. 1 先基于.cpp或者.c文件生成对应的.o文件 2将几个.o文件 使用ar -cr命令 生成libname.a文件 libname.a 为静态库, name 为静态库的名 ...

  6. gcc生成dll linux,gcc编译dll和调用dll

    方法一: 共有三个文件:print.h,print.c,test.c *************************************************************** p ...

  7. 完美解决Linux环境编译ffmpeg库

    背景说明 项目功能实现需要在Linux下编译出可用的FFmpeg库.FFmpeg在编译过程中是需要链接其它三方库的,比如x265 x265等,否则可能会造成功能不全(如程序接口返回找不到H264编码器 ...

  8. linux ndk编译静态库,Android开发教程:NDK编译静态库失败

    Android---NDK编译静态库失败 Android.mk 相关编译文件: include $(CLEAR_VARS) LOCAL_MODULE    := libdvnca LOCAL_SRC_ ...

  9. 在linux下编译boost库【搜集】

    http://www.cnblogs.com/flywuya/archive/2010/11/30/1892483.html 编译环境 操作系统:SUSE linux Enterprise Serve ...

最新文章

  1. poj1603(Flody算法)
  2. mysql主从复制延时性问题_MySQL主从同步延迟原因及解决办法
  3. 【Linux入门到精通系列讲解】Ubuntu下使用gcc编译并运行C程序
  4. 【Machine Learning实验2】 Logistic Regression求解classification问题
  5. JavaScript——易班优课YOOC课群在线测试禁止查卷解决方案
  6. GDCM:gdcm::UIDs的测试程序
  7. CSS3知识点整理(三)----变形与动画
  8. Go语言 读写锁互斥锁原理剖析(2)
  9. scss里的继承操作符@extend
  10. LeetCode 123. 买卖股票的最佳时机 III(动态规划)
  11. 从外卖员到程序员,自学3年终于转行成功,三面“拿下”拼多多,把经历分享给你们!
  12. cmos和ttl_【转】CMOS与TTL电路的区别
  13. 游戏化设计:平台用户激励系统——互联网平台建设...
  14. display:inline-block 间隙
  15. Socket编程入门(一)实现简单的Socket实例
  16. 绿坝即将登场,好戏就要开演
  17. 注册ActiveX控件时DllRegisterServer调用失败的解决方法
  18. Xshell6 Xftp6 官方永久免费版下载
  19. 一文带你读懂 Java Agent 内存马
  20. 张学友 - 蓝雨(粤)

热门文章

  1. C# 多页打印简单实现
  2. 图像的色彩类别,灰度化,二值化
  3. c++清空串口缓冲区
  4. 汇编语言不带冒号标号的用法
  5. IOS15自定义UICollectionView的使用
  6. $.post请求的参数在后台代码中得到为null_vue中Axios的封装和API接口的管理
  7. arc.archives.class.php关于分页错位怎么修改,解决织梦分页错位的办法
  8. python的数据类型_Python支持哪些数据类型
  9. imagecomposition工程分析
  10. Android开发之在任意Activity在广点通页面添加自定义布局在穿山甲页面添加任意布局