【问题标题】:Retrieve path and filename of standalone MATLAB program检索独立 MATLAB 程序的路径和文件名
【发布时间】:2015-07-09 20:19:18
【问题描述】:

我在 Windows 7 中使用 MATLAB R2008b。 编译器是 Lcc-win32 C 2.4.1。 我试图从一个可以检索其路径和文件名的 m 文件制作一个 exe 文件。一位同事给了我一个 C 文件(mlgetmodulefilename.c)并建议我使用 mcc -m XYZ.m mlgetmodulefilename.c 生成XYZ.exe

首先,我遇到了一些关于 matlab.h 的错误。所以我复制、粘贴并将 mex.h 重命名为 matlab.h。 然后,我遇到了以下错误和警告:

警告:名称不存在或不是目录:C:\Program 文件\MATLAB\R2008b\工具箱\编译器\补丁。
c:\users\user\appdata\local\temp\mbuild~1\mlgetmodulefilename.obj .text: 对'_mxCreateString'的未定义引用

谁能帮我解决这个问题?谢谢。

mlgetmodulefilename.c

#include "matlab.h"
#include <stdio.h>
#include <windows.h>
#include "megetmodulefilename_external.h"

/*
   INPUT
   None

   OUTPUT
   None

   RETURN
   The full filename of the calling function

   SYNOPSIS

*/
#define BUFSIZE 255

mxArray * Mmegetmodulefilename(int nargout_)
{
    DWORD buflen;
    TCHAR lpFilename[BUFSIZE]=TEXT("");

    buflen = GetModuleFileName(NULL, lpFilename, BUFSIZE);

    if (buflen == 0) {
        return (mxCreateString("") );
    }
    else {
        return (mxCreateString(lpFilename) );
    }
}

【问题讨论】:

    标签: c matlab


    【解决方案1】:

    请参阅link 以获取有关如何获取 exe 安装路径的说明。

    我尚未在 R2008b 中对此进行测试,但它可以在最新版本中使用。

    你直接在你的m文件中使用这个的第一个选项(我用过很多次)

    【讨论】:

    • 谢谢你,matlabgui。我使用了 ProgramDir=fileparts(getcurrentdir) 但它仅从存储 exe 的文件夹返回上一级。例如,XYZ.exe 存储在“D:\ABC\XYZ.exe”,但它只返回“D:\”。有什么建议吗?
    • 不要使用“文件部分”。该方法返回exe文件夹而不是exe名称。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    相关资源
    最近更新 更多