我正在使用MATLAB项目,并希望能够配置变量和路径而无需重新创建可执行文件(目前通过使用MATLAB的内置deploytool完成).我意识到我可以创建一个简单的文本文件,列出key = value对,并在运行时读取它.在MATLAB中似乎没有任何内置支持来创建遵循标准格式的配置文件.
是否有任何标准的现有方法来为MATLAB生成的可执行文件使用配置文件?
我在Matlab中编写了一个轨迹规划器,我想编译为.dll或.so以包含在Python中.是否可能,如果是,我在哪里以及如何开始?我已经安装了gcc和g ++.
我在MATLAB中创建了一个DLL,它为我的.m函数提供了一个接口.
现在我想将它与MCR运行时库一起使用.(MCR = Matlab编译器运行时).
我在一个C例程中调用这个DLL,最终用GCC(MinGW)编译成一个包装器DLL.
现在我的函数分为两种形式:
extern LIB_XYZ_C_API
bool MW_CALL_CONV mlxGet_path(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[]);
extern LIB_XYZ_C_API bool MW_CALL_CONV mlfGet_path(int nargout, mxArray** p);
Run Code Online (Sandbox Code Playgroud)
从这些我选择后者,因为前者似乎是一种"旧式/遗产".
我这样称呼它:
char get_path(LStrHandle path)
{
char mret = init_XYZ(); // here I call mclmcrInitialize(), mclInitializeApplication(NULL, 0) etc.
if (mret) return mret;
mret = 2;
// here the relevant part begins
mxArray * mxpath = NULL; // set it to NULL and let the callee allocate it
bool bret = mlfGet_path(1, &mxpath);
// now …Run Code Online (Sandbox Code Playgroud) 是否可以从Silverlight/C#调用matlab函数?
我的m文件是:
x=0:0.01:2*pi;
y=sin(x);
plot(x,y)
Run Code Online (Sandbox Code Playgroud)
我想用.exe格式构建这个程序.我想在没有matlab的计算机上运行此.exe.
我有一些Matlab代码和一个GUI,我想制作一个独立的应用程序来保护我的源代码.我该如何构建这个独立的?谢谢你的任何指导.
================================================== ==============================
我在帮助中找到了:
如果您不想以此格式分发您的专有应用程序代码,则可以使用以下更安全的选项之一:
•部署为P代码 - 将部分或全部源代码文件转换为称为P代码文件的内容模糊形式(来自其.p文件扩展名),并以此格式分发应用程序代码.
•编译成二进制格式 - 使用MATLAB编译器编译源代码文件以生成独立应用程序.将后者分发给应用程序的最终用户.
使用P代码很简单,也没问题.
构建独立的可执行文件
保护源代码的另一种方法是将其构建为独立的可执行文件,并将可执行文件以及任何其他必要的文件分发给外部客户.您必须安装MATLAB编译器和支持的C或C++编译器才能准备文件以进行部署.但是,最终用户不需要MATLAB.
要为MATLAB应用程序构建独立应用程序,请按照MATLAB程序文件的常规步骤开发和调试应用程序.然后,按照程序员在MATLAB编译器文档中部署到最终用户的步骤中的说明生成可执行文件.
- 创建一个包含运行时所需软件的包.看看程序员需要什么软件?更多细节.
要将使用MATLAB编译器创建的独立应用程序分发到开发计算机,请创建包含以下文件的包.
MCRInstaller.exe(Windows)
MCRInstaller是一个自解压缩的可执行文件,可以安装必要的组件来开发您的应用程序.该文件包含在MATLAB Compiler中.
application_name.exe(Windows)
应用程序由MATLAB Compiler创建.Maci64必须包含bundle目录层次结构.
matlab source-code-protection matlab-deployment matlab-compiler
所以我有一段MATLAB代码,我在exe中编译.这个exe文件将由未安装MATLAB的人使用.但原始的m文件也被一些高级用户使用.我在编译的exe版本中无法提供一些功能.我的问题是我想为exe和m原始版本维护相同的代码.为了做到这一点,我希望我的代码能够自动检测正在运行的文件是exe还是m文件,以便我可以使用if语句禁用exe版本的某些函数.有办法做到这一点???
这个问题的起源是从这里如何在c中调用的matlab函数中使用"全局静态"变量.
我试图将"全局变量"封装到一个对象中.但是我不知道如何使用MATLAB Compiler(mcc)将matlab类导出到c ++
为此,我尝试了标准命令
mcc -W cpplib:Vowel4 -T link:lib Vowel4.m
Run Code Online (Sandbox Code Playgroud)
classdef Vowel4
properties
x
y
end
methods
Vowel4
A
B
end
end
Run Code Online (Sandbox Code Playgroud)
生成的lib实际上是独立的函数而不是c ++类.
如何将Matlab中的类编译成c ++类?
我一直在寻找答案,但没有找到答案.
显然matlab命令不适合这种情况.但是我找不到有关将matlab类构建到c ++类中的任何信息.
==========================编辑======================= =
实际的cpp代码如下:@Alan
mclInitializeApplication(NULL, 0);
loadDataInitialize();
soundByCoefInitialize();
loadData();
mwArray F(4, 1, mxDOUBLE_CLASS);
float test[4];
for ( ;; ){
const Frame frame = controller.frame();
const FingerList fingers = frame.fingers();
if ( !fingers.empty() ){
for ( int i = 0; i < 4; i ++ ){ …Run Code Online (Sandbox Code Playgroud) 我将我的matlab程序转换为.net程序集,即dll文件.我已经制作了一个控制台C#应用程序添加dll文件并从php调用它.每次调用.exe时都会调用MCR.如何在服务器启动时初始化MCR而不是每次都关闭,即使在一段时间后调用了exe ??如果有任何其他方法可以使这个过程快速,请建议.
我在我的机器上安装了Matlab Compiler Runtime.它工作正常,但现在当我运行一些需要它的代码时,我收到此错误:
无法初始化MCR实例:指定的组件已过期.
我认为MCR基本上是免费下载的,但现在我想知道我是否有试用版或者其他东西,尽管据我所知,没有什么可以说在Matlab下载网站上就是这种情况.
还有其他人有同样的问题吗?