You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MinGW-W64编译MatLab包装DLL遇WinMain未定义及mt命令缺失问题

问题描述

我尝试将MatLab脚本生成DLL,并制作适配LabView调用的包装DLL,过程中遇到两个编译错误:

  • MatLab脚本生成DLL的过程顺利,得到了.dll、.h、.lib、.def等文件;
  • 编写包装DLL代码后,使用以下mbuild命令编译:
mbuild -v A0007121_3LIV_W.c A0007121_3LIV.lib LINKFLAGS="$LINKFLAGS /DLL /DEF:A0007121_3LIV_W.def" LDEXT=".dll" CMDLINE250="mt -outputresource:$EXE';'2 -manifest $MANIFEST"

编译时MinGW-W64报错:undefined reference to WinMain;

  • 在包装C代码中添加空main函数后,WinMain错误解决,但出现新错误:'mt' is not recognized as an internal or external command, operable program or batch file.

使用环境:MatLab 2019b、MinGW-W64 6.3.0


相关代码

MatLab脚本源码

function [SNR_dB, PhaseNoise_mean] = Misura_SNR_con_SBX(FullName, Figure_path)
   ...
end

包装头文件

#ifndef A0007121_3LIV_W
#define A0007121_3LIV_W

void loadA0007121_3LIV(void);
void unloadA0007121_3LIV(void);

int wmlfMisura_SNR_con_SBX(char* FullName, char* FigurePath, double* SNR_dB, double* PhaseNoise_mean);

#endif

包装代码

#include "A0007121_3LIV_W.h"
#include "A0007121_3LIV.h"

#include "matrix.h"

void loadA0007121_3LIV(void)
{
    A0007121_3LIVInitialize();
}

void unloadA0007121_3LIV(void)
{
    A0007121_3LIVTerminate();
}

int wmlfMisura_SNR_con_SBX(char* FullName, char* FigurePath, double* SNR_dB, double* PhaseNoise_mean)
{
    int result = 1;

    mxArray* mFullName = mxCreateString(FullName);
    mxArray* mFigure_path = mxCreateString(FigurePath);

    int nargout = 2;

    mxArray* mSNR_dB = NULL;
    mxArray* mPhaseNoise_mean = NULL;

    //int nargout, mxArray** SNR_dB, mxArray** PhaseNoise_mean, mxArray* FullName, mxArray* Figure_path
    result = mlfMisura_SNR_con_SBX(
        nargout, 
        &mSNR_dB, 
        &mPhaseNoise_mean, 
        mFullName, 
        mFigure_path);

    //TODO: outputs ?

    memcpy(SNR_dB, mxGetPr(mSNR_dB), sizeof(double));
    memcpy(PhaseNoise_mean, mxGetPr(mPhaseNoise_mean), sizeof(double));

    mxDestroyArray(mFullName);
    mxDestroyArray(mFigure_path);
    mxDestroyArray(mSNR_dB);
    mxDestroyArray(mPhaseNoise_mean);

    return result;
}

包装.def文件

LIBRARY A0007121_3LIV_W
EXPORTS
loadA0007121_3LIV
unloadA0007121_3LIV
wmlfMisura_SNR_con_SBX

内容的提问来源于stack exchange,提问作者weirdgyn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 11:20:54