c++调用matlab的dll,折腾了一天时间,在matlab初始化时候报错“异常:0xc0000005:读取位置0x0000000000000008 时发生访问冲突”;刚开始怀疑是matlab到处的dll有问题,自己装了个matlab重新导,还是同样的错误,已经确保了matlab,dll,vs都是64位
c++调用matlab异常.jpg
dll导出
1. deploytool工具导出dll
在matlab命令行输入deploytool,选择Library Complier。在窗口选择C++ Shared Library, Add exported functions中选择对应的*.m,然后点击右侧Package即可
2. 命令行mcc导出dll
mex - setup
mbuild - setup
mcc - W cpplib : mydllAdd - T link : lib *.m
ps: 这两种方式,方法1deploytool导出后.h中没有我定义的方法,使用方法2命令行导出正常,这里暂时没去深究。
异常:0xc0000005处理
c++中调用matlab初始化时,出现异常:0xc0000005:读取位置0x0000000000000008 时发生访问冲突,针对这一问题,因为我们是64位,只需要在异常设置中取消勾选Win32 Exceptions即可。ps: Win32 Exceptions项在vs调试-->窗口-->异常设置中(快捷键Ctrl + Alt + E)
原文:简书ThinkinLiu 博客: IT老五
IT老五(it-lao5):关注公众号,一起源创,一起学习!
本文解决C++调用Matlab DLL时遇到的0xc0000005异常问题,通过取消勾选VS中的Win32Exceptions选项成功解决。文章对比两种DLL导出方法,deploytool工具和命令行mcc,并指出后者更稳定。
7453

被折叠的 条评论
为什么被折叠?



