问题标签 [mex]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
646 浏览

wcf - C# WCF 在企业防火墙内部工作,但不在外部

我的 WCF JSONP Web 服务遇到了一个“有趣的”错误。它是我唯一拥有的,它只公开一种方法。如果我在内部通过 Web 浏览器访问我的服务,它会弹出一条消息,实际上 MEX 未启用(真)。如果我从我们的网络外部点击它(就像你会,除非你在我公司的一台机器上)它只是坐在那里,最后超时。URL 是:http ://demo.rivworks.com/services/Negotiate.svc 。关于可能导致这种行为的任何想法?

这是web.config:

这是代码:

我在这里做了几件事:

  1. 为什么我不能从本地网络外部访问它?
  2. 如何让 MEX 正常工作

注意:我正在使用此处找到的 JSONP 类:http: //msdn.microsoft.com/en-us/library/cc716898.aspx

0 投票
2 回答
11687 浏览

gcc - matlab mex 文件的共享库位置:

我正在尝试编写一个使用 libhdf5 的 matlab mex 函数;我的 Linux 安装提供了 libhdf5-1.8 共享库和头文件。但是,我的 Matlab 版本 r2007b 提供了 1.6 版本的 libhdf5.so。(显然,Matlab.mat文件引导 hdf5)。当我编译 mex 时,它在 Matlab 中出现了段错误。如果我将我的 libhdf5 版本降级到 1.6(不是长期选项),代码可以编译并运行良好。

问题:我该如何解决这个问题?如何告诉 mex 编译过程链接到 /usr/lib64/libhdf5.so.6 而不是 /opt/matlab/bin/glnxa64/libhdf5.so.0 ?当我尝试-Wl,-rpath-link,/usr/lib64在我的编译中使用它时,我会收到如下错误:

确认。最后的手段是下载 hdf5-1.6.5 标头的本地副本并完成它,但这不是未来的证明(Matlab 版本升级是我的未来。)。有任何想法吗?

编辑:根据 Ramashalanka 的出色建议,我

A) 调用mex -v以获取 3 个gcc命令;最后是链接器命令;

B)用 a 调用该链接器命令-v以获取collect命令;

C)调用它collect2 -v -t和其余的标志。

我的输出的相关部分:

所以,实际上libhdf5.sofrom/usr/lib64正在被引用。但是,我相信这会被环境变量覆盖,我LD_LIBRARY_PATH的 Matlab 版本会在运行时自动设置它,因此它可以找到自己的版本,例如libmex.so,等等。

我认为该crt_file.c示例既可以使用 b/c,也可以不使用我正在使用的函数 ( H5DOpen,在从 1.6 到 1.8 的移动中具有签名更改(是的,我正在使用-DH5_USE_16_API)),或者不太可能,b/ c 它不会击中需要 hdf5 的 Matlab 内部部件。确认。

0 投票
3 回答
601 浏览

c++ - MATLAB任意代码执行

我正在linux下编写一个自动分级程序。有几个用 MATLAB 编写的评分器,所以我想把它们绑在一起,让学生运行一个程序来做作业,让他们选择作业。我正在使用一个 C++ 主程序,然后将 mcc 编译的 MATLAB 库链接到它。

具体来说,我的程序会读取一个配置文件以获取各种 matlab 程序的名称以及其他信息。然后它使用该信息向学生展示选择。因此,如果分配更改、添加或删除,那么您所要做的就是更改配置文件。

这个想法是,接下来,程序调用已用 mcc 编译的正确 matlab 库。但是,这意味着如果分级机发生变化,则必须重新编译库。更糟糕的是,如果添加或删除评分器,则必须重新编译整个程序。所以,我想要一个简单、不变的 matlab 库函数来直接调用分级机 m 文件。我目前有这样一个库,它对从主程序传递给它的字符串使用 eval 。

问题是,当我这样做时,显然,mcc 将分级机 m 代码吸收到自身中;编译后更改grader m代码没有效果。我希望这不会发生。我注意到 Mathworks 可能不希望我这样做,因为它可以完全绕过 matlab。这不是我的本意,我会对需要完整安装 matlab 的解决方案感到满意。

我可能的解决方案是为主程序使用 mex 文件,或者让主程序调用 mcc 库,然后调用 mex 文件,然后调用适当的分级器。我对第一个解决方案犹豫不决的原因是我不确定我必须对我的代码进行多少更改才能使其正常工作。我的代码是 C++,而不是 C,我认为这会使事情变得更复杂。但是,第二种解决方案可能会更复杂,并且最终会遇到同样的问题。

那么,对这种情况有什么想法吗?我该怎么做?

0 投票
1 回答
351 浏览

c++ - MEX 文件以循环方式将脉冲输出到 DAQ 板

我想我必须使用 MEX 文件将循环中的数字脉冲(40 kHz)从 Matlab 输出到我的 DAQ-Board,我有一些来自 DAQ-Board 供应商的 API,但我真的不知道它们是否有用。这是 Mathworks 网站上关于 MEX 文件和 API 的大型文档,这让我感到困惑。所以我在这里问是否有人可以指导我或向我展示一个示例代码来实现这一点!

0 投票
2 回答
754 浏览

c++ - mex中的openmp:stackoverflow错误

我有以下部分代码让我遇到堆栈溢出错误

在 shared 中声明的变量是由 malloc 创建的。它们消耗大量内存

关于上述代码有2个问题。1)为什么在进入并行for循环之前会产生堆栈溢出错误(即分段错误)?它在顺序模式下运行时工作正常...... 2)我是否有权为每个线程动态分配内存,如上面的“normalized_p_gn”?

问候埃德温

0 投票
3 回答
4087 浏览

matlab - 如何从 mex 函数访问 matlab 结构字段中的矩阵?

我试图弄清楚如何从 mex 函数访问存储在 matlab 结构中的字段中的矩阵。

太啰嗦了……让我解释一下:

我有一个 matlab 结构,其定义如下:

我有一个 mex 函数,我希望能够在其中接收指向矩阵中第一个元素的指针(矩阵 [0] [0],用 c 术语表示),但我一直无法弄清楚该怎么做那。

我尝试了以下方法:

最终打印的内容如下:

我还尝试了以下变体,认为嵌套函数调用可能有些不稳定,但无济于事:

有没有人知道我如何才能实现我想要的目标,或者我可能做错了什么?

谢谢!

编辑:根据 yuk 的评论,我尝试对一个结构进行类似的操作,该结构有一个名为 array 的字段,它是一个一维双精度数组。

包含数组的结构定义如下:

我在 mex 函数中对 arrayStruct 尝试了以下操作:

...但输出遵循之前打印的内容:

0 投票
2 回答
11467 浏览

c++ - 如何在 MATLAB 中创建字符串数组?

我想将字符串向量从 C++ 传递给 MATLAB。我曾尝试使用可用的功能,例如mxCreateCharMatrixFromStrings,但它没有给我正确的行为。

所以,我有这样的事情:

问题是如何将这个向量放到 matlab 环境中?

我的目标是能够运行:

0 投票
1 回答
903 浏览

matlab - MATLAB Mex 文件

有没有办法获取内置 MATLAB m- 文件的 mex 文件?如果是,如何?如果不是,这是否意味着我必须自己编写 C 代码(哦不!!!)

0 投票
3 回答
416 浏览

c - 在 64 位机器上处理文件,但在 32 位机器上开发

我将在 64 位 Windows 机器上使用 C 语言中的 Mexfunction 在 matlab 中读取 TDMS 文件,但我将在 32 位 Windows 机器上开发应用程序。我知道 32 位机器和 64 位机器之间存在变量大小的差异。我用了很多 fread(.. sizeof(type)..)。当它在 64 位机器上运行时会出现问题吗?如果是这样,我怎样才能使它可移植到 64 位机器?

谢谢

0 投票
1 回答
818 浏览

mysql - MySQL 和 MATLAB 64 位

我正在尝试使用 MATLAB R2009b 64 位和在FEX此处找到的 mysql.cpp 文件连接到 MySQL 。我按照第二个链接中列出的所有步骤进行编译。输入以下内容后:

mysql.mexw64文件是在我的工作目录中创建的。但是,当我去测试它时,我收到以下错误:

我尝试用 -DWIN64 切换 -DWIN32,但这只会引发各种错误。有人对为什么这不起作用有任何建议吗?

我在 Windows 7 64 位上使用 MATLAB R2009b 64 位。