QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 13945|回复: 3
打印 上一主题 下一主题

[其他资源] matlab生成exe文件(总结)

[复制链接]
字体大小: 正常 放大
我能 实名认证    中国数模人才认证   

24

主题

8

听众

2288

积分

升级  9.6%

  • TA的每日心情
    慵懒
    2023-4-27 19:48
  • 签到天数: 321 天

    [LV.8]以坛为家I

    社区QQ达人

    群组中国矿业大学数模培训

    群组数学建模培训课堂2

    群组2011年第一期数学建模

    群组学术交流B

    跳转到指定楼层
    1#
    发表于 2012-11-2 13:08 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    matlab功能相当的强大,写好了m文件但是其他很多电脑没有安装matalb,不能运行,所以我们想找到生成exe的可执行文件,我么就想到了和c语言c++进行混合编程,在windows下生成exe文件,matlab和vs等的文章很少大都是那几个 ,我自己在网上找了些东西总结了下:! u, }% z. W/ B( Y  \
    8 o  G7 c* g9 i2 M: m. k' a$ n
    1.Matlab环境设置
    要建立独立运行的C应用程序,系统中需要安装MatlabMatlab编译器、C/C++编译器以及Matlab C/C++数学库函数和图形库函数。
    & k  P! |8 Y/ |! X
    Matlab编译器使用mbuild命令可以直接将C/C++源代码编译为独立运行程序,在这些源代码中可以使用Matlab提供的接口来调用Matlab数学库函数。
    5 u# c$ t# {: {7 F% R
    虽然生成的可执行程序可以脱离Matlab环境运行,但是它需要Matlab C/C++数学库文件或者图形库文件的支持才能运行。但如果C/C++源代码完全是按传统C/C++源代码语法规则编写,没有包含Matlab数学库和图形库的调用,则不仅可以独立与Matlab环境,也不需要那两个库函数的支持。
    Matlab Command Window 下输入命令
    mbuild – setup
    操作过程如下图:
                                  
    然后输入命令
    mex – setup
    以类似的方法配置编译器。Matlab 的配置完成。
    2.VS环境设置
    1)设置Include Library 目录
    项目右键->属性->VC++目录->包含目录:添加
    <MATLAB>\R2010b\extern\include\win64
    <MATLAB>\R2010b\extern\include\
    项目右键->属性->VC++目录->库目录:添加
    <MATLAB>\R2010b\extern\lib\win32\microsoft
    <MATLAB>\R2010b\extern\lib\win64\microsoft
    截图(部分):
    2)设置工程目录
    项目右键->属性->C/C++->常规->附件包含目录:添加
    <MATLAB>\R2010b\extern\include\win64
    <MATLAB>\R2010b\extern\include\
    项目右键->属性->链接器->常规:添加
    <MATLAB>\R2010b\extern\lib\win32\microsoft
    <MATLAB>\R2010b\extern\lib\win64\microsoft
    项目右键->属性->链接器->输入->附件依赖性:添加
    libeng.lib3 J, E0 |+ J/ C
    libmat.lib- y6 e9 s7 o8 ^
    libmex.lib  E' N0 r* Z' o  ~' d0 ~
    libmx.lib
      
    注:1.lib文件包含在<MATLAB>\R2010b\extern\lib\win64\microsoft,可根据需要增减
    2.附件依赖性在VS2010前以空格隔开,在VS2010后使用;隔开。
    截图:
    项目右键->属性->链接器->高级->目标计算机:更改(只针对64WINDOWS
    MachineX86 -> MachineX64
    注:分析原因为MATLAB根据计算机平台选择了X64编译环境,如此处不修改会出现 错误3
    3)配置管理器设置(只针对64WINDOWS
    生成->配置管理器->平台:更改
    Win32->X64
    注:分析原因为配合链接器中目标计算机的修改,如此处不修改会出现 错误4
    截图:
    3.系统(Windows)环境设置
    我的电脑->属性->高级系统设置->高级->环境变量->Path,添加:
    <MATLAB>\R2010b\bin;<MATLAB>\R2010b\extern\lib\win64\microsoft;<MATLAB>\bin\win64
    注:1.Windows7的情况下,用户变量系统
    变量都需 添加,如不添加,运行时会出现 错误5
    2.哈哈,别忘记重启哈,重启后生效
    OK!配置就此结束,现在就开始engOpen吧!!对了,别忘记添加#include "engine.h"
    ! F  h; n2 [5 o. p7 k- @# [
      6 T: g) W6 {0 M
    1.设置编译器:, b. I: @7 I4 c
    在确定安装好Matlab Compiler后,还需要对Compiler进行适当的配置,方法是在Matlab命令窗口输入:
    0 B/ c$ J$ e% R  w. [% t( dMbuild –setup, 按提示选择matlab自带编译器LCC。$ V# K* X* Q* N
    ; C( P5 M7 V7 X
    2.将脚本编译为可执行文件:
    7 a  A/ m; W/ x8 D3 c4 i如项目文件包含:gui.m, gui.gif, fun1.m。
    0 `3 a' W4 W8 _- l( |% k4 x# n+ m- x0 g: J5 V4 C' [: H: N
    在此路径下命令行输入:mcc –m gui.m,生 成:mccExcludedFiles.log,ReadMe.txt,gui.ctf,gui.prj,gui_main.c,gui_mcc_component_data.c,gui.exe。其中:gui.ctf,gui.exe为脱离matlab环境运行必需的文件。
    7 R/ W$ Y/ `  }
    6 s6 Q& m' c2 _3.在未安装matlab的机器上运行可执行程序。
    $ d2 F- g: f, a9 _1 o: c# @, y% `将R22007b\toolbox\compiler\deploy\win32中的MCRinstaller.exe安装到该计算机上,将生成可执行程序脱离matlab运行所需的函数库。: Y; ?' V8 E& x9 t, X
    将2中生成的gui.ctf,gui.exe拷贝到该计算机同一路径。运行gui.exe将生成gui_mcr文件夹,包含程序运行所需的库。至此完成。
      f$ k, Q* ?9 w3 g0 U9 M
    & m/ T8 l2 t* p3 P4.去除独立可执行程序运行时的“DOS黑窗口”。8 ^7 a# \1 t7 q
    以上生成的exe程序运行时首先弹出一个DOS界面窗口,如果不需要其输出数据和错误信息,可将其去除。& y' `0 ^9 Q, ^: Y9 L7 E% c

    % ~0 d4 h0 P; \$ p( T' s9 nmatlba命令行输入:9 [$ T$ {3 t$ R8 s/ b2 M1 w. w9 D
    4 h; [* a, P/ o# d
    cd(prefdir)% o( ]& I  |  O
    edit compopts.bat
    0 T. i! n' F3 C% g- D6 c( [: T
    4 j1 I/ u" k1 l0 O# i) a# v" O此时compopts.bat打开,在文件最后添加:
    " D8 s. k. w# `, H" `$ a) c" ?5 @
    set LINKFLAGS=%LINKFLAGS% -subsystem windows5 f1 J0 R; P- l5 s

    + ?; B: F, }+ t& _# p如果程序比较复杂,易出现异常,则不建议去除这个dos窗口以便调试。
    3 o: {" A  _( u, M% \& z5 W) @/ {, W. f5 V. }6 |" @7 C
    另外,这个办法是适用于你用的编译器为LCC,如果是其他的,那么所加语句有所不同1 |  J  Z" @. R- I3 r. O
    1 s* u6 h2 v! G" o7 L# L: f4 K) h
    Microsoft Visual C/C++:
    , ]; H, l: Z/ l* T: V5 F# Y' Q' w9 F
    set LINKFLAGS=%LINKFLAGS% /SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup
    1 w- x  {) s; F+ P- j2 e
    3 n- r. w; Y$ x- ?  `Borland:8 _3 ~* Y" k7 x1 k

    4 S3 Z5 x8 o9 P* L. y& ~  {/ l0 o! M+ C- qset LINKFLAGS=%LINKFLAGS% -aa% y; k* [( W# `& t1 a  {+ P% \
    ———————————————————————————————————————–' r# {2 B4 E" O+ F0 K
    % ]# K6 t) E; S% k; d0 B1 D- c
    方法一:6 ^" j& c: A* X! c& ?6 y$ i! D
    已有gui.m文件和gui.fig文件6 W4 e8 x  x1 r2 Q0 E0 [5 n
    1 在matlab的command窗口中输入% ]8 U. N9 O  l: `- n: n: o
    mcc -B sgl GUI.m
    - S1 R% a; c! `" M1 r& V2.将上步生成的文件包括*m 文件和*.fig文件一起考到待运行的机器0 u4 Z* o9 `3 G
    1 o$ }3 h! }; [, L: u, U
    此时仍需matlab所必需的动态连接库。
    ! B) e/ P( k, K, D# A& {3. 将 /extern/lib/win32/mglinstallar.exel拷贝到到待运行机器上
    8 S, ^" A" c' z0 R4.在机器上先运行mglinstallar.exe, 然后选择解压目录,将在将在指定目录下解压缩出bin和toolbox两个子目录,' `2 q: p( i) Y
    其中在bin\win32目录下就是数学库和图形库脱离MATLAB运行所需的所有动态连接库,共
    0 D; D& J& H; V4 V( }4 W有37个。可以将这些.dll考入system32, 也可以直接放在应用程序目录下。
    ! T; d% b( U: L5 S3 D- n0 B# y而toolbox目录则必须与应用程序同一目录。' N1 t  ^! v, ?5 ]2 J2 r4 h

    / Z3 h( I: T9 D4 ^方法二:
    2 F! Y& ^. i! t# n7 y0 u$ e
    : l- L1 R! g8 u4 C; Mmatlab编程很方便,强大的矩阵运算功能,很多好用的工具箱,但是一般程序都要在matlab环境中运行,能否脱离这个环境打包发布呢,matlab 也提供了这样的工具。, C4 V3 _2 a& F5 Z0 v' x

    9 ]4 M, j: F+ s  X9 s# z. I7 x+ D1. 转化为c/c++程序并编译为.exe
    " W' f# j% }! X$ M% {3 H2 w先验证mcc是否可用,用matlab中的example验证即可
    3 ?% {$ d: z3 b2 z2 [  t# s建议不用matlab默认的lcc 编译器(可能有问题),可使用VC6编译器(按默认路径安装)
    : Z- Q+ v+ u: m$ V8 b& N由于带有界面,需要图像库支持,编译时应使用命令: mcc -B sglcpp pressure. n8 ?7 }1 M1 t2 r, f! Z, W/ `9 R
    编译生成若干c/c++源码,以及.exe文件、bin目录中figure菜单条/工具条文件(.fig)等* z& I8 D. x7 ]$ l# ?
    程序发布需要.exe、bin\、.fig& c1 I+ o+ n, r. ~; X" N# o

    ( p0 u& f& w+ {) G6 t2. 在未装matlab的电脑上运行程序需要数学运行时库、图像运行时库以及用到的工具箱mex文件5 X; V3 D9 v' X$ T4 o% `
    前两者已经在\matlab\extern\lib\win32mglinstaller.exe压缩包中,将其解压,并在环境变量path中添加解压到的路径, A# u& @5 m! I1 _
    另外若程序中还用到其他工具箱的东西,那么需要将此工具箱中需要的mex文件也一并放在解压到的路径,子文件夹位置与matlab中的位置相同
    0 A- @- i: [2 Z" `. W
    ! ?9 |# }% v- c+ T; _0 P/ c- ?3. 在确保.exe程序可以运行的情况下 可以用setup factory打包发布; c4 ^/ i3 |( e% Z/ _
    以下通过注册表自动添加path路径6 \: H/ i8 b1 `& Y4 d
    %————————————————————————————–# x* C9 ~7 g$ B5 _7 c: H
    Screen.Next(); — 进入下一个屏幕
    1 B2 o* E" r* U3 XresultDialog = Dialog.Message(“注意”, “向环境变量中加入matlab数学库及图象库的安装路径?”, MB_YESNO, MB_ICONINFORMATION, MB_DEFBUTTON1);
    * z- B! n0 Q1 Oif (resultDialog == IDYES) then –加入安装路径/ y" ^9 c, _6 l% y, O
    strPath = Registry.GetValue(HKEY_CURRENT_USER, “Environment”, “path”, true);
    ! [" \! K' @: `8 x% n; X. t if strPath ~= “” then# ?) A* A! q+ f
    strPath = String.Concat(strPath, “;”);4 X4 U! s; `' c% b- J
    end, @& y" i& N9 e; m% n9 J8 K
    strPathToAdd = SessionVar.Expand(“%AppFolder%”);
    6 q, ^6 k3 e: ?* y" P/ H# @strPathToAdd = String.Concat(strPathToAdd,”file://MATLAB6p5//bin//win32″);
    2 P4 Q" ^% k7 S: F' d8 ^— 如果路径中无该位置,则加入2 l& J4 r  p. [9 }" z; Z, d( j
    if String.Find(strPath,strPathToAdd) == -1 then+ |# r6 q* a9 Z6 F) ?
    strPath = String.Concat(strPath, strPathToAdd);
    8 ^8 d4 b) o5 N# G, J Registry.SetValue(HKEY_CURRENT_USER, “Environment”, “path”, strPath, REG_SZ);
    ; [2 d4 d; n* Z0 g$ M end
    4 l; n3 k! b- x( I6 rend# G/ A9 z0 J0 h
    %————————————————————————————–4 u. R. m, V: `& i$ X4 d
    方法三:
    / e0 T1 z  p4 i! _( P2 g2 L9 w1 h) X在网上搜了一个方法,还没有用过, 贴在这里仅供参考:& f1 x; L+ E* w: K2 m8 q+ H* A
    一、 完全可以,而且生成的.exe文件可以在没有安装matlab的机器上使用,方法吗---2 Y! O4 |. w6 H- g$ E
    首先,使用mcc编译得到.exe文件,具体参数见帮助文件;2 s- h& j4 T3 c; \
    其次,将.exe文件及相关资源文件以及一个称为mglinstaller.exe的软件包一起拷到别的机器上,运行mglinstaller.exe,并添加环境变量path,即可执行.exe文件0 c' D! P* }. [. b* _
    第三,在MATLAB环境,执行命令
    " U' ]* W3 e0 P6 i9 y: Y( imcc -m -B sgl file.m
    5 e5 Z+ s+ X8 W) H5 p  K- Y或者 mcc -p -B sglcpp file.m# h: _! f; K% t8 \! Q
    请键入help mcc看帮助。7 P+ s' z! }1 X+ @  o8 w: e% E  O% o
    mcc是在“command windows” 用的吗?
    ' H$ w  p5 V/ z. J% o只要“mglinstaller.exe”,与.exe文件及相关资源文件就可以了吗.8 ?; @# |- ^" v
    还有“添加环境变量path”是path到.exe文件的环境中是吧?
    - C; l+ \4 N1 v5 [5 g. F0 e! U/ c, t8 p/ @
    二、 在matlab下的workspace里打comtool,点file-open project将我们先前建好的 comtest.cbl工程文件打开,再点component–package component就实现了打包,此时到 comtest\distrib文件夹里看,生成的comtest.exe就是打包后的解压程序,双击它会解压出一些文件,再点击解压出来的 _install.bat就可以实现安装
    " r1 w: _! B: n: Z' \0 _三、 如何将gui生成exe ?5 {! F$ g( T1 C; _7 r9 S0 h* N
    已有gui.m文件和gui.fig文件
    2 Q1 b0 i- L0 }/ Y7 c1 在matlab的command窗口中输入
    $ f9 d( O2 a! R  `% D5 p% xmcc -B sgl GUI.m% M5 N# S* P# k& ]
    2.将上步生成的文件包括*m 文件和*.fig文件一起考到待运行的机器; F* {2 i. e! j8 q# b
    此时仍需matlab所必需的动态连接库。* l7 \! x3 I, G" Y
    3. 将 /extern/lib/win32 /mglinstallar.exel拷贝到到待运行机器上
    % l' i' k4 e+ ]* Q/ G4.在机器上先运行mglinstallar.exe, 然后选择解压目录,将在指定目录下解压缩出bin和toolbox两子目录,其中在 bin\win32目录下就是数学库和图形库脱离MATLAB运行所需的所有动态连接库,共有37个。可以将这些.dll考入system32, 也可以直接放在应用程序目录下。而toolbox目录则必须与应用程序同一目录。  i( t- l& s1 H5 v2 Z/ ~% ^8 h
    5.大功告成。 7 S- ?! Z3 y$ X  a7 K

    9 M8 [8 M7 P' J/ `外一篇:MATLAB M文件变exe文件( a  r/ Z& D, n0 Q" ~
    我也是最近才搞定的这个问题,按下述步骤进行,就没有问题,我已经运行成功,但是遇到你程序的bug的话,便会出现错误,关闭整个程序
    " V5 g3 n2 g8 J* h0 N希望这些对你有用
    5 ^% O3 l' A1 {$ O
    5 U5 X" a: S! {5 l, N9 _如何将MATLAB程序编译成独立可执行的程序?如何将编译好的独立可执行程序发布在没有安装MATLAB的电脑上?下面将一步步实现:  f3 I) x+ z0 ]

    5 Y, ]- z: g( \& K- Y一、生成独立可执行的程序(exe文件)步骤. |- b( c7 M3 `3 ?# o) A  p

    % f, z: l' i) H: t6 |% f- f: X1、安装编译器。可有多种选择,matlab自带了一个LCC,推荐使用VC++6.0,我基于VS 2003实现。
    + t6 _$ l  L8 {" t2、设置编译器。在matlab命令行输入mbuild –setup以及mex –setup,选择安装的c编译器。( @5 X* v) k4 I3 y, ^3 a& u! b
    3、调用编译器。此处使用MATLAB下的一个GUI平台deploytool下完全实现。在命令窗口输入deploytool即可看到。具体使用方法请Help。9 A5 i! D5 z) N9 J1 s
    当然,也可以输入mcc -m filaname, filaname为要转成exe的m文件;( C- P+ p  {' t! c3 r! M6 |" e
    注:在以前的版本中,用编译命令mcc -B sglcpp filaname;自2006的版本后,替换为mcc -mfilaname;
    : W" R. n9 p% {/ M$ ^4 k4、安装\toolbox\compiler\deploy\win32目录下的MCRInstaller。
    $ K$ N6 z) J/ I4 m/ F/ b! s7 }
    1 I; I' G1 M4 T2 a; E* V二、脱离matlab运行可执行程序9 B4 R, N1 E6 J
    MCR是由matlab的运行环境,占用不到300M的对于用不同matlab版本生成的exe文件,MCR版本也会有不同,因此,在程序打包时,最好将相应版本的MCR一起打包。MCR环境的设置文件存放目录如下:
    0 ]! g3 s6 ?+ P6 i. d2 ?% r \toolbox\compiler\deploy\win32
    & ]6 ^9 N: J  V" O* f- ^6 H文件名为MCRInstaller.exe。可将其拷贝到自己的文件夹中,(7.0以前的版本是mglinstaller.exe)。& q- y& N5 o* r% g) t& h! o: @" f
    在MATLAB里运行可执行程序的办法是在前面加一个!,比如:!picshow,后缀名可有可无。" y1 I+ M6 U0 K; h0 V  X
    在其它没有安装matlab的机器上运行exe文件前:' t7 Q' x& l8 J7 E2 }
    首先安装matlab的运行环境。在同一机器上可以并存不同版本的matlab环境(换句话说不同版本不兼容)。
    7 z7 W% Y' n8 v2 ^其次是要将“MCRinstaller.exe安装目录\runtime\win32”这个路径添加到该计算机的环境变量中,通常是自动加载。$ ^7 r' i9 H, m
    如果没有,也可手动安装,添加的方法是:! o2 W; |) q7 J, \) |0 \5 s
    右击“我的电脑”“属性”“高级”“环境变量”“添加”指定一个变量名,然后将上述路径复制到里面就可以了。3 T& N4 i  N: R! E
    注:在安装过程中会弹出让安装Microsoft.NETFramework可以不用安装。
    2 g+ q# b( \) }" @最后就是将编译生成的相相关文件拷贝到同一目录下,双击即可运行。
    + _. \1 s# \( E问题:目前此方法可完全运行在没有安装MATLAB以及C/C++的电脑上,但是如果是在AMD的CPU可以运行,但是不会出现任何MATLAB编译的界面。
    4 M4 a9 C( d  a% {( T  J美中不足就是,运行的时候dos的那个黑色地窗口一直存在。下面将实现去除黑屏的办法:
    : B% f, J" |! R: ?% y" Y+ s
    4 q) K, M: g( h" m5 T7 o4 k4 p4 i消除运行MATLAB生成的exe程序的dos黑屏的办法3 W/ n! O  Z- o# E- T/ f
    基于MATLAB生成exe文件后,每次运行都存在dos黑屏的问题,现在可以通过以下方法解决:
    5 B7 g% ?" g# P# N方法一: 在命令窗口输入:2 `1 q9 r5 _! L, B) t. L
    cd(prefdir); x) q. T' e' g! D4 Z
    edit compopts.bat
    3 F9 |3 z. E% O在打开的文件最后添加以下语句:
    + T( x# `9 H8 P0 N( L9 D
    $ N. ?4 g, t! o( G( S: ]A.VC环境下:
      Q4 v" t- a, V1 ^8 R/ C2 l
    . l! G( s  X* p$ H  I3 e9 o8 Vset LINKFLAGS=%LINKFLAGS%/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup
    8 [( [! c! V: {, x; r/ d% z" Z
    8 |4 g1 _9 z8 ?! P% Z4 NB.LCC环境下:
    & K2 e8 v0 m. pset LINKFLAGS=%LINKFLAGS% -subsystemwindows
    6 t2 C* P- e2 q5 D$ }7 v
    / Q% ?# ?, k, Z, F; Y3 L0 q4 u- s2 B2 @C. Borland:9 t4 z6 A4 i5 K0 m" g! I& S
    set LINKFLAGS=%LINKFLAGS% -aa4 G5 F' l( d3 P: ^% \
    / @7 p0 z+ a7 N9 C) U! Z9 J3 x
    保存以后,再重新编译m文件,生成的exe文件运行起来就没有dos窗口了
    9 s, \' f  t8 m( E0 K7 f
    - f$ `3 ~% C0 g/ }6 k* C; i方法二:使用suppress工具:
    / @5 ?- H; w$ Q下载附件中的suppress压缩包后解压,(当然您可以自己去Google然后再下载)会看到一个suppress.ini文件,用记事本打开,然后将 其中“Name=test.exe”中text.exe的改为你生成的exe文件名。将suppress.exe(有个关盘和显示器的图标),改后的 suppress.ini放到你生成的exe的同目录下。执行suppress.exe或者您自己生成的exe可以了。当然您可以自己修改 suppress.exe的名字,改为您自己想要的名字。7 a  @2 i: b; t
    - W' k' h/ s( Z5 s: i! {
    其中的方法一在使用后生成的exe再到没有任何安装MATLAB的机子上运行也不会有黑屏了。
    0 a0 ~4 {+ \  \1 F9 j方法二的缺点就是要同时存在您生成的exe以及supress.exe,必须在同一目录下。$ J: A6 H9 ~! k2 L4 x- `% p
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

    2

    主题

    6

    听众

    117

    积分

    升级  8.5%

  • TA的每日心情
    开心
    2013-9-18 23:25
  • 签到天数: 53 天

    [LV.5]常住居民I

    群组Matlab讨论组

    群组2013认证赛A题讨论群组

    群组数学建模

    回复

    使用道具 举报

    15

    主题

    10

    听众

    799

    积分

    升级  49.75%

  • TA的每日心情
    开心
    2015-7-17 20:50
  • 签到天数: 68 天

    [LV.6]常住居民II

    自我介绍
    我是一名大二学生。

    群组2013年国赛赛前培训

    回复

    使用道具 举报

    eagle1208 实名认证       

    1

    主题

    4

    听众

    25

    积分

    升级  21.05%

  • TA的每日心情
    开心
    2014-1-10 19:20
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-6-14 10:34 , Processed in 0.486719 second(s), 69 queries .

    回顶部