QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 13915|回复: 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等的文章很少大都是那几个 ,我自己在网上找了些东西总结了下:
    $ S) g. W3 z1 o8 ~) u( Q/ Q/ t
    1 R; V* y: g4 g3 Z
    1.Matlab环境设置
    要建立独立运行的C应用程序,系统中需要安装MatlabMatlab编译器、C/C++编译器以及Matlab C/C++数学库函数和图形库函数。
    7 r0 t) E2 Y: C; A
    Matlab编译器使用mbuild命令可以直接将C/C++源代码编译为独立运行程序,在这些源代码中可以使用Matlab提供的接口来调用Matlab数学库函数。0 N# G1 v3 b1 C$ ?2 A7 E5 n  \
    虽然生成的可执行程序可以脱离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.lib
    8 v" w* N9 p9 r5 i  I  Nlibmat.lib
    + @( I# h2 S- K% ^5 N  `1 Slibmex.lib- L0 U' s& F- f: u8 `+ j# a1 G
    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"
    3 k) o7 ~4 M3 c$ O" E3 u
      
    0 S2 J! I2 k- y9 f1.设置编译器:
    0 f+ E0 A2 v0 T6 @- v在确定安装好Matlab Compiler后,还需要对Compiler进行适当的配置,方法是在Matlab命令窗口输入:
    8 v4 x6 R4 M8 u- |( {  vMbuild –setup, 按提示选择matlab自带编译器LCC。5 E0 ^4 t; D1 ?, `. G

    6 D8 ?6 Q0 F5 P- L6 s4 A2.将脚本编译为可执行文件:
    0 v0 q. h, z3 g9 E如项目文件包含:gui.m, gui.gif, fun1.m。
    , M) @9 ~1 N. v- u* E9 v' H2 q, e9 a
    在此路径下命令行输入: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环境运行必需的文件。5 k2 [' i& _: E) M2 c
    . F& Z8 N% Y2 j
    3.在未安装matlab的机器上运行可执行程序。
    % x$ W, t& u" {" \将R22007b\toolbox\compiler\deploy\win32中的MCRinstaller.exe安装到该计算机上,将生成可执行程序脱离matlab运行所需的函数库。
    - j" s( q4 I" d! ], d将2中生成的gui.ctf,gui.exe拷贝到该计算机同一路径。运行gui.exe将生成gui_mcr文件夹,包含程序运行所需的库。至此完成。
    $ r0 A. w3 S/ e. ]# K' G$ U2 Z& k2 h7 b7 Q
    4.去除独立可执行程序运行时的“DOS黑窗口”。: |! a2 n$ v3 _+ s4 v
    以上生成的exe程序运行时首先弹出一个DOS界面窗口,如果不需要其输出数据和错误信息,可将其去除。' y0 `" Z. J* o1 y
    ) k8 Y( b' Z: L' e, J
    matlba命令行输入:
    ( G$ Q9 u( T0 ]& g5 s: Q1 P! I$ e2 C) J% _% ]+ V6 r
    cd(prefdir)  u  L% |5 m: e
    edit compopts.bat
    ' H+ t* p* `& ]# ]3 D1 J; h* y0 }$ J1 z5 h
    此时compopts.bat打开,在文件最后添加:# c4 i+ s* X: s; i3 T7 K

    ( `5 t3 |, f8 x# \% I7 [set LINKFLAGS=%LINKFLAGS% -subsystem windows; o7 r& {- f4 q

    ( s+ G. M4 ?1 D3 @如果程序比较复杂,易出现异常,则不建议去除这个dos窗口以便调试。1 n4 O: d/ ]- ?$ ^2 l7 w

    4 p. {. b; }) Q% i另外,这个办法是适用于你用的编译器为LCC,如果是其他的,那么所加语句有所不同# O! V0 e3 Z3 ?; i( B$ P

    , ?7 c/ ]% G9 u+ y! |Microsoft Visual C/C++:7 ?8 j  i  n& V0 {2 a  U
    + l- a" N( E5 e  S! |' t" T
    set LINKFLAGS=%LINKFLAGS% /SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup
    " o9 W" L, A  S! u# t* s: ~: e9 c+ i6 E4 E) L' h
    Borland:" s3 ]& t+ n9 |
    7 B2 z# D* y* J( {( j$ ?
    set LINKFLAGS=%LINKFLAGS% -aa
      T5 J& E: N& Y7 g0 z———————————————————————————————————————–
    " [3 G; |7 i# n# Q. r( v7 _7 O' A# \6 z+ x1 m- _/ s
    方法一:# Q: x. L$ z. K  c6 _1 ^) H
    已有gui.m文件和gui.fig文件/ L+ Q  ]" O% |, b
    1 在matlab的command窗口中输入, X& Q4 q3 A+ ]) Y
    mcc -B sgl GUI.m7 Y; e: z% T* u- Q4 v- b
    2.将上步生成的文件包括*m 文件和*.fig文件一起考到待运行的机器
    3 N( K& k1 C' l$ v8 r9 u" X) k: U4 y/ }
    此时仍需matlab所必需的动态连接库。; o6 b  ^7 T% N. C- ~
    3. 将 /extern/lib/win32/mglinstallar.exel拷贝到到待运行机器上
    , D# D2 E, V! ?0 ^5 O4.在机器上先运行mglinstallar.exe, 然后选择解压目录,将在将在指定目录下解压缩出bin和toolbox两个子目录,: G; l: Q0 U& t& R% [
    其中在bin\win32目录下就是数学库和图形库脱离MATLAB运行所需的所有动态连接库,共
    % `" r, v) _2 `* {! d有37个。可以将这些.dll考入system32, 也可以直接放在应用程序目录下。, ], I3 O0 _8 {2 q: G# [* f
    而toolbox目录则必须与应用程序同一目录。3 M: o! T3 A5 q2 {3 ?1 j: e% q0 p
    6 B7 N& V+ O3 _2 z
    方法二:9 z& |( W. O2 G! P

    $ o  D" N/ n' u+ ~' T; V9 T* T8 ]matlab编程很方便,强大的矩阵运算功能,很多好用的工具箱,但是一般程序都要在matlab环境中运行,能否脱离这个环境打包发布呢,matlab 也提供了这样的工具。
    7 @; Z' Q" J, I* @: f5 W- a4 y+ M
    1. 转化为c/c++程序并编译为.exe
    : [+ C2 M; U: I2 s. u先验证mcc是否可用,用matlab中的example验证即可
    / h2 M8 v! {0 R/ h( Z  j$ S建议不用matlab默认的lcc 编译器(可能有问题),可使用VC6编译器(按默认路径安装), b9 W: m' j% n" S
    由于带有界面,需要图像库支持,编译时应使用命令: mcc -B sglcpp pressure# X' f6 r6 ]) d1 H' a
    编译生成若干c/c++源码,以及.exe文件、bin目录中figure菜单条/工具条文件(.fig)等
    ! d* p8 y4 Z# ~+ u3 n& Z: d4 b  O程序发布需要.exe、bin\、.fig
    " K9 R$ Y- ]4 c! _$ j/ n6 z# f& B+ u' w& R
    2. 在未装matlab的电脑上运行程序需要数学运行时库、图像运行时库以及用到的工具箱mex文件5 s1 H$ G2 v" ^% u' W
    前两者已经在\matlab\extern\lib\win32mglinstaller.exe压缩包中,将其解压,并在环境变量path中添加解压到的路径" H! l' l" K. D$ f
    另外若程序中还用到其他工具箱的东西,那么需要将此工具箱中需要的mex文件也一并放在解压到的路径,子文件夹位置与matlab中的位置相同# V, J+ u+ P+ b1 f8 @8 k6 q

    ( H4 i3 @# R" ]" _3. 在确保.exe程序可以运行的情况下 可以用setup factory打包发布3 n. v7 \4 Q8 G8 W9 a$ B# p
    以下通过注册表自动添加path路径
    5 t6 E+ x! \, ?%————————————————————————————–
    : X8 l% O$ L4 C  t; dScreen.Next(); — 进入下一个屏幕
    % c7 N, @, s0 t/ f6 @5 @resultDialog = Dialog.Message(“注意”, “向环境变量中加入matlab数学库及图象库的安装路径?”, MB_YESNO, MB_ICONINFORMATION, MB_DEFBUTTON1);
    # l% I4 ^. y2 H7 q, cif (resultDialog == IDYES) then –加入安装路径
    * P5 h, d/ g$ D! O, L% T0 g! ~2 QstrPath = Registry.GetValue(HKEY_CURRENT_USER, “Environment”, “path”, true);8 j. p- |; w, f7 q$ M) W- M* X
    if strPath ~= “” then8 H- C0 L0 x/ u9 [( u3 @* `5 F
    strPath = String.Concat(strPath, “;”);& q/ J! Q7 Z# v2 N/ p! h! q
    end
    - S# }! L# a7 `8 V# n+ c) ` strPathToAdd = SessionVar.Expand(“%AppFolder%”);* Y' z1 J, c5 l' A
    strPathToAdd = String.Concat(strPathToAdd,”file://MATLAB6p5//bin//win32″);
    9 N1 {' E4 g) d) Z& c( b4 E/ ]— 如果路径中无该位置,则加入3 R5 e7 G( n2 I5 W' v7 p0 V, m
    if String.Find(strPath,strPathToAdd) == -1 then, F; a  Q% B) h; w7 r/ L+ W
    strPath = String.Concat(strPath, strPathToAdd);
    2 {5 u- ~6 u, r& u+ U' E Registry.SetValue(HKEY_CURRENT_USER, “Environment”, “path”, strPath, REG_SZ);
    . Z4 b! V8 `% L+ I; f end
    3 c/ l$ i6 p0 i& N  ?, Y* `end
    1 c% n; u7 n" v%————————————————————————————–% ?& k3 d" {4 Y+ Y- p
    方法三:
    * v) K5 T# D! l在网上搜了一个方法,还没有用过, 贴在这里仅供参考:) k0 x# r& ]6 i* s5 N
    一、 完全可以,而且生成的.exe文件可以在没有安装matlab的机器上使用,方法吗---
    * q" o+ C3 `& P4 K+ l4 W首先,使用mcc编译得到.exe文件,具体参数见帮助文件;
    / M% h# u* q) Z* |! a其次,将.exe文件及相关资源文件以及一个称为mglinstaller.exe的软件包一起拷到别的机器上,运行mglinstaller.exe,并添加环境变量path,即可执行.exe文件; u, }; ~: h( ]/ M, C/ s9 I
    第三,在MATLAB环境,执行命令7 Y5 J- B7 T- b( O- P! G" E" S( f
    mcc -m -B sgl file.m6 P4 `1 w! C% Z# U6 |: e  w
    或者 mcc -p -B sglcpp file.m
    . a: p% s+ y# }- @( s请键入help mcc看帮助。, P" Z& q6 u- N% p: d
    mcc是在“command windows” 用的吗?
    0 D! E2 T3 i1 ]+ j3 W: m7 H+ T7 s, e只要“mglinstaller.exe”,与.exe文件及相关资源文件就可以了吗.8 B. @$ F$ u, y3 k0 ~. v9 F
    还有“添加环境变量path”是path到.exe文件的环境中是吧?
    1 f9 s" K8 e3 o& P1 M4 x1 q/ o8 v9 ^6 L  v) s, S
    二、 在matlab下的workspace里打comtool,点file-open project将我们先前建好的 comtest.cbl工程文件打开,再点component–package component就实现了打包,此时到 comtest\distrib文件夹里看,生成的comtest.exe就是打包后的解压程序,双击它会解压出一些文件,再点击解压出来的 _install.bat就可以实现安装
    5 o5 k. Y2 l# B' x0 |, c三、 如何将gui生成exe ?
    $ c0 s" J& Y  s2 [0 X, L已有gui.m文件和gui.fig文件
    9 u5 [$ k8 P% ~) C5 e1 z1 在matlab的command窗口中输入. A1 l( g  m7 A0 u8 b5 l
    mcc -B sgl GUI.m: N; o( x# g9 [! i& x, S3 [9 G
    2.将上步生成的文件包括*m 文件和*.fig文件一起考到待运行的机器9 r* `" l8 {' y2 _
    此时仍需matlab所必需的动态连接库。
      V8 n+ f" t8 a# z3. 将 /extern/lib/win32 /mglinstallar.exel拷贝到到待运行机器上$ A( b* _+ z# O  [4 D% V
    4.在机器上先运行mglinstallar.exe, 然后选择解压目录,将在指定目录下解压缩出bin和toolbox两子目录,其中在 bin\win32目录下就是数学库和图形库脱离MATLAB运行所需的所有动态连接库,共有37个。可以将这些.dll考入system32, 也可以直接放在应用程序目录下。而toolbox目录则必须与应用程序同一目录。, K+ e3 j& f5 k) C; y1 ]. k4 X
    5.大功告成。
    1 p' Q; K! P' t/ P, e
    7 P! z& x: W( M/ K& e外一篇:MATLAB M文件变exe文件9 \' p: B8 ?: n% r) V; t
    我也是最近才搞定的这个问题,按下述步骤进行,就没有问题,我已经运行成功,但是遇到你程序的bug的话,便会出现错误,关闭整个程序) k. R" O1 z) f( i
    希望这些对你有用
    6 M: T) L4 x1 s  q) z! p1 Y0 `+ L/ Z0 P$ ~
    如何将MATLAB程序编译成独立可执行的程序?如何将编译好的独立可执行程序发布在没有安装MATLAB的电脑上?下面将一步步实现:
    ; `( Z- L  N6 U2 U2 a  U
    & r3 d1 F: C9 q' U一、生成独立可执行的程序(exe文件)步骤* s1 s' j8 z" {, N" t+ T
    * i# G- ?8 ?+ S! A+ U
    1、安装编译器。可有多种选择,matlab自带了一个LCC,推荐使用VC++6.0,我基于VS 2003实现。" j) J3 i1 I% D: ?5 h3 K
    2、设置编译器。在matlab命令行输入mbuild –setup以及mex –setup,选择安装的c编译器。9 K5 \* O3 B8 |9 h" ]( \7 S; }2 E
    3、调用编译器。此处使用MATLAB下的一个GUI平台deploytool下完全实现。在命令窗口输入deploytool即可看到。具体使用方法请Help。* y1 f$ V% w, s; m
    当然,也可以输入mcc -m filaname, filaname为要转成exe的m文件;; e: D  s% j. M' v; v
    注:在以前的版本中,用编译命令mcc -B sglcpp filaname;自2006的版本后,替换为mcc -mfilaname;+ e) e4 P* ]$ |& B/ A/ J, V4 W% h
    4、安装\toolbox\compiler\deploy\win32目录下的MCRInstaller。( O, a$ H, E0 d' a4 a
    5 R$ l4 k% t% p) s6 n9 z- O: ?
    二、脱离matlab运行可执行程序: T* L! y6 @: G: O! H9 i* S
    MCR是由matlab的运行环境,占用不到300M的对于用不同matlab版本生成的exe文件,MCR版本也会有不同,因此,在程序打包时,最好将相应版本的MCR一起打包。MCR环境的设置文件存放目录如下:. a. r9 O% X" P6 u
    \toolbox\compiler\deploy\win324 I4 L) t7 l8 V: c$ F
    文件名为MCRInstaller.exe。可将其拷贝到自己的文件夹中,(7.0以前的版本是mglinstaller.exe)。  x: u7 ?7 @& R  ?' i2 u
    在MATLAB里运行可执行程序的办法是在前面加一个!,比如:!picshow,后缀名可有可无。) r- ~+ x" a1 `
    在其它没有安装matlab的机器上运行exe文件前:
    6 A/ s! H- h0 w( u- t$ Y  T. M首先安装matlab的运行环境。在同一机器上可以并存不同版本的matlab环境(换句话说不同版本不兼容)。
    0 |5 N) J; D0 v其次是要将“MCRinstaller.exe安装目录\runtime\win32”这个路径添加到该计算机的环境变量中,通常是自动加载。
    3 e) o9 z7 g  \, K2 i' K0 y8 p3 I如果没有,也可手动安装,添加的方法是:- z/ r3 y5 H% S) C9 }
    右击“我的电脑”“属性”“高级”“环境变量”“添加”指定一个变量名,然后将上述路径复制到里面就可以了。6 P. c8 |% A( N/ p* I& b! \* N
    注:在安装过程中会弹出让安装Microsoft.NETFramework可以不用安装。  L% b; y2 L8 ]
    最后就是将编译生成的相相关文件拷贝到同一目录下,双击即可运行。+ j" E+ `7 a( S9 {
    问题:目前此方法可完全运行在没有安装MATLAB以及C/C++的电脑上,但是如果是在AMD的CPU可以运行,但是不会出现任何MATLAB编译的界面。  u0 ~* `5 A6 [$ J- y+ g
    美中不足就是,运行的时候dos的那个黑色地窗口一直存在。下面将实现去除黑屏的办法:
    # X# ~& ^8 P, g
    : y* I+ H) e8 R; ?& j+ V7 D% v消除运行MATLAB生成的exe程序的dos黑屏的办法  n' G+ C/ a3 Z* _
    基于MATLAB生成exe文件后,每次运行都存在dos黑屏的问题,现在可以通过以下方法解决:2 S$ H, C$ L: {' V5 y: m
    方法一: 在命令窗口输入:3 A# N9 n! ^; A: H8 i
    cd(prefdir)
    8 i* U, @% z) o4 j& F9 U3 redit compopts.bat
    ) E/ t2 `) ?1 N% \; e: @" `3 q在打开的文件最后添加以下语句:
    % _* e! z6 d; s/ w$ Z/ o  d3 Q) E2 b
    2 u; @* {. h" c6 ]A.VC环境下:
    2 f5 U5 X9 {7 T* T( ^  e- A+ B
    * Z0 C2 Z" A5 B1 @# x- _8 c2 P4 jset LINKFLAGS=%LINKFLAGS%/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup
    3 c3 ~: m0 R2 m8 `
    / O! y/ K; j6 g  w, ~5 D2 w! @B.LCC环境下:7 p8 {6 t1 N1 o
    set LINKFLAGS=%LINKFLAGS% -subsystemwindows & w/ @- d6 e* f$ W" C5 }

    9 H. ~/ ]" R% r' H$ k- A$ n4 A" YC. Borland:% i$ G5 V$ O/ L5 t, ^
    set LINKFLAGS=%LINKFLAGS% -aa- Y. K' j+ p8 s2 J2 d. @

    , @$ g+ }! z/ E  O保存以后,再重新编译m文件,生成的exe文件运行起来就没有dos窗口了
    0 P$ _: ~! A$ l" X/ H) K* l- ^9 `: ~/ |
    方法二:使用suppress工具:5 l6 g% X" d0 g3 X2 ~# K
    下载附件中的suppress压缩包后解压,(当然您可以自己去Google然后再下载)会看到一个suppress.ini文件,用记事本打开,然后将 其中“Name=test.exe”中text.exe的改为你生成的exe文件名。将suppress.exe(有个关盘和显示器的图标),改后的 suppress.ini放到你生成的exe的同目录下。执行suppress.exe或者您自己生成的exe可以了。当然您可以自己修改 suppress.exe的名字,改为您自己想要的名字。& |( G! I# p. ]. ^
    2 L" g( g$ u2 J) Z' y+ L4 u3 l6 X
    其中的方法一在使用后生成的exe再到没有任何安装MATLAB的机子上运行也不会有黑屏了。* q; B3 n8 D# B( ]5 G/ f
    方法二的缺点就是要同时存在您生成的exe以及supress.exe,必须在同一目录下。
    9 v" U: D" d& V, d, Z3 B
    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-5-25 01:25 , Processed in 0.473318 second(s), 69 queries .

    回顶部