从 MATLAB 调用的 C .exe 文件中存在的 fprintf() 不起作用
fprintf() present in a C .exe file called from MATLAB doesn't work
我正在使用 unix()
函数调用在 MATLAB 中使用 Cygwin 编译的 C 可执行文件。这工作正常,我可以在 MATLAB 命令 window 上看到所需的输出。但是,在可执行文件中有一个 fprintf() 应该创建并写入一个文本文件,该文件不 运行 - 没有创建这样的文件。当我直接通过 Cygwin 运行 可执行文件时,文本文件创建得很好。
我想知道是否需要授予 MATLAB file/executable 权限才能启用此功能?我该怎么做?
您创建文件的路径是什么?它可能已经创建 - 只是不在您期望的位置。
如果它是相对路径,您可以在 C 程序中使用 getcwd(2)
来获取和打印工作目录(或者例如 getpid(2)
来获取 PID,然后执行 ls -d /proc/<pid>/cwd
,这将至少在 Linux 上起作用)。有了工作目录后,检查文件是否在其中。
如果看起来文件确实没有被创建,我的下一步将是向函数添加一些错误检查并打印错误消息以试图弄清楚发生了什么。 strerror(3)
和 perror(3)
可能会派上用场。
我正在使用 unix()
函数调用在 MATLAB 中使用 Cygwin 编译的 C 可执行文件。这工作正常,我可以在 MATLAB 命令 window 上看到所需的输出。但是,在可执行文件中有一个 fprintf() 应该创建并写入一个文本文件,该文件不 运行 - 没有创建这样的文件。当我直接通过 Cygwin 运行 可执行文件时,文本文件创建得很好。
我想知道是否需要授予 MATLAB file/executable 权限才能启用此功能?我该怎么做?
您创建文件的路径是什么?它可能已经创建 - 只是不在您期望的位置。
如果它是相对路径,您可以在 C 程序中使用 getcwd(2)
来获取和打印工作目录(或者例如 getpid(2)
来获取 PID,然后执行 ls -d /proc/<pid>/cwd
,这将至少在 Linux 上起作用)。有了工作目录后,检查文件是否在其中。
如果看起来文件确实没有被创建,我的下一步将是向函数添加一些错误检查并打印错误消息以试图弄清楚发生了什么。 strerror(3)
和 perror(3)
可能会派上用场。