我无法更新任何我最重要的墨西哥人代码运行在R2018a没有这个功能!这是坏的…非常糟糕的…
在R2018a mxCreateSharedDataCopy不再支万博1manbetx持
2视图(30天)
显示旧的评论
这是一个错误消息我当编译C-mex文件
错误使用墨西哥人函数mxCreateSharedDataCopy不受支持的。万博1manbetx切换到使用更高效的MATLAB数据API可用在c++中墨西哥人的应用程序,或重新运行墨西哥人-R2017b命令行选项使用R2017b API。
不能看到任何远程相当于MATLAB数据API。这个功能对我来说非常重要,使墨西哥人更快的代码。什么是另一种选择,如果我们想使用R2018a(交错复杂的)和创建共享数据拷贝吗?
答案(4)
Ned查尔斯
2018年5月9日
我们想澄清一下,MEX files建于R2018a使用默认选项来墨西哥人命令不会看到如果他们使用非法API mxCreateSharedDataCopy构建错误。这些墨西哥人文件工作R2018a和旧版本(以及未来版本)。不可能构建mex files,选择新的交错复杂的API和使用非法mxCreateSharedDataCopy。mex files,选择交错复杂的只有在R2018a工作和将来的版本中。
可以构建墨西哥人的文件都使用交错复杂的数据,即写即拷完全文档化支持的行为。万博1manbetx数组创建c++ API自动使用MATLAB数据即写即拷没有任何特殊处理和知识所需的程序员。这些墨西哥人文件将在R2018a工作和将来的版本中。看到
//www.tianjin-qmedu.com/help/matlab/matlab_external/c-mex-functions.html
关于c++墨西哥人的更多信息。布鲁诺的问题,不仅可以一个c++墨西哥人与输入参数函数共享数据,但是数组的副本也在墨西哥人创建的文件将使用即写即拷。看到
//www.tianjin-qmedu.com/help/matlab/matlab_external/copy-cpp-api-matlab-arrays.html
。
我们没有记录或支持即写即拷mex files,因为我万博1manbetx们相信我们内部C API将过高MEX-File作者负担。没有提供的抽象和implementation-hiding c++, C API之间需要合作的所有代码使用的数组共享这副本写入数组数据之前。与c++ API,可以完全支持优化没有MEX-File作者需要采取任何特殊措施正确的万博1manbetx行为。MathWorks鼓励记录c++ API,因为它提供的性能即写即拷不麻烦的管理和风险管理错误从而导致错误,可能很难检测,诊断和修复。
1评论
詹姆斯Tursa
2020年2月19日
编辑:詹姆斯Tursa
2020年2月24日
“…与c++ API,可以完全支持优化没有MEX-File作者需要采取任何特殊措施来获得万博1manbetx正确的行为……”
除非正确的行为是为了避免大量数据复制发生在后台没有直接控制用户。
作为一个墨西哥人的程序员,我不希望发生不能够控制什么时候发生。除非提供检验方法,程序员可以检测共享变量时(isaSharedDataCopy isaReferenceCopy,等等),这样下游算法可以避免大型深数据副本,这个新的c++接口有非常有限的使用对我来说……甚至没有使用。我需要能够
知道
当一个动作我要会或不会导致一个又大又深的数据复制。我目前读博士,我看不出有任何方法,允许我这样做。我知道TMW已经把大量的思想和精力到这个新c++接口,但你仍然让很多人冷落,直到你提供最低,这些检查方法。
1月
2018年4月20日
编辑:1月
2018年4月20日
[评论多于一个答案:]
mxCreateSharedDataCopy没有记录。可能会有一个无证方法在2018数据API。
就好了,如果MathWorks提供了一个详尽的文档关于原地访问数组的墨西哥人的水平。我等待这个自1999年以来。
3评论
詹姆斯Tursa
2018年4月27日
编辑:詹姆斯Tursa
2018年4月27日
因此,值得注意的是,这不是错误消息
“…未解决的外部符号……”
但正是这种
“…mxCreateSharedDataCopy不支持……万博1manbetx”
因此它不是函数不一定有,链接器无法找到它。似乎发生了什么是,墨西哥人命令本身是停止建设,因为它认为你试图与这个特定的函数。
创建共享数据复制功能仍然存在在MATLAB(容易验证通过一些简单的测试在命令行调试格式),事实上mxCreateSharedDataCopy函数仍然看起来存在libmx文件,但墨西哥人命令专门防止链接到它。这似乎是一个深思熟虑的决定,TMW,不是一个无意的疏忽。这可能是由于这一事实mxArray头被改变(如π指针被)和TMW不想写一个新函数,R2018a mxArray兼容,或者TMW试图引导你走向他们的c++数据API。无论如何这使得C程序员冷落,没有替代API函数来使用。
作为边注,非法mxCreateReference API函数实际上是在R2014a从libmx文件中删除。这是非常有用的在墨西哥人函数在处理单元和结构体变量。