QQ登录

只需要一步,快速开始

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

求助:关于混合编程的错误,用mex编译就出现 - MATLAB 应用发布

[复制链接]
字体大小: 正常 放大
深叶子        

5

主题

7

听众

24

积分

升级  20%

  • TA的每日心情
    难过
    2014-9-22 12:14
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    自我介绍
    数学专业
    跳转到指定楼层
    1#
    发表于 2014-8-23 20:04 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    如何实现C语言与MATLAB接口,出现 E:\PROGRA~1\MATLAB\R2012\BIN\MEX.PL: Error: No file names given. .错误。9 B5 w1 ~7 ~  k; }
    这该怎么解决啊?, f) ?% q# P& P  T- I2 D
    》mex-setup6 W1 S3 t; h* Z5 ~' N8 l3 g
        Usage: ; q& m- l  B" [6 ?5 q: V
            MEX [option1 ... optionN] sourcefile1 [... sourcefileN]
    9 I2 E; e- V0 z            [objectfile1 ... objectfileN] [libraryfile1 ... libraryfileN] 8 o5 B, c# {" j: ^5 Q

    4 ^3 V, P" F/ J; m/ `1 X    Use the -help option for more information, or consult the MATLAB API Guide. 3 f% k. _1 B7 ?! C( O
    & x% C1 P6 j- d; f  z
    1 d2 K1 @8 @1 ]( e$ g
      E:\PROGRA~1\MATLAB\R2012\BIN\MEX.PL: Error: No file names given.
    & U, T" v3 G' K% b" N3 o+ g6 G" b 7 S  `' M  c; @; I$ `
    Undefined function or variable 'setup'.
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    到 ...
    madio        

    3万

    主题

    1312

    听众

    5万

    积分

  • TA的每日心情
    奋斗
    2024-7-1 22:21
  • 签到天数: 2014 天

    [LV.Master]伴坛终老

    自我介绍
    数学中国站长

    社区QQ达人 邮箱绑定达人 优秀斑竹奖 发帖功臣 风雨历程奖 新人进步奖 最具活力勋章

    群组数学建模培训课堂1

    群组数学中国美赛辅助报名

    群组Matlab讨论组

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

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

    编译文件的时候后面要加上需要编译的文件的名字,貌似就是这个问题。Undefined function or variable 'setup'是不是mex后面没有加一个空格,你改成mex  -setup试试
    数学建模社会化
    回复

    使用道具 举报

    madio        

    3万

    主题

    1312

    听众

    5万

    积分

  • TA的每日心情
    奋斗
    2024-7-1 22:21
  • 签到天数: 2014 天

    [LV.Master]伴坛终老

    自我介绍
    数学中国站长

    社区QQ达人 邮箱绑定达人 优秀斑竹奖 发帖功臣 风雨历程奖 新人进步奖 最具活力勋章

    群组数学建模培训课堂1

    群组数学中国美赛辅助报名

    群组Matlab讨论组

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

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

    网上找到这个总结的不错,你可以借鉴!1 D9 o+ w7 }% l, R0 K

    # a: W' B  i7 G在matlab上使用libsvm工具箱使用错误及解决方法汇总4 y9 V0 ]4 D2 |2 t/ {% I5 u* a9 b& v
    首先附上使用过程: S2 X' b8 C' J) A" o, B) \5 q8 p) z
    step1: 输入>>mex -setup4 ^* n8 s6 u3 M- v) _
       step2:% C* c9 g/ p' _. S
       Please choose yourcompiler for building external interface (MEX) files: " B" W8 a: y1 T, M4 m) o8 V3 [- k
       Would you like mex to locate installed compilers [y]/n?        是否让matlab自动检测编译器可以选y
    ! ?$ C# r3 H4 p( j1 w& `. p  step3:
    8 c* H, P' L" m7 n8 m0 d7 [$ [$ \   Select a compiler:3 n' w1 j1 w+ l; j+ L! L0 v

    0 s2 o3 f' q  h: Z+ f! \# E0 u3 n
         [1] Lcc-win32 C2.4.1 in E:\PROGRA~1\MATLAB\R2010a\sys\lcc
    1 u% N& ?+ ~# Q; W1 H! ?% ]     [2] MicrosoftVisual C++ 2008 SP1 in e:\Program Files\Microsoft Visual Studio 9.0
    ( i0 R$ ^+ h  g- h     [3] MicrosoftVisual C++ 6.0 in E:\Program Files\Microsoft Visual Studio
    " U. r' y( T0 _, i     [0] None
    & F$ h) v5 P  \* a5 _; C1 f2 C     [1]matlab 自带的不能用 其他的如果有的话 就相应的选择就行  
    5 T4 Z3 @6 f2 z; Z# ?+ W     我选择了 【2】
    ' L) I5 ]/ v8 ?, D1 S7 a    step4:
    2 B- p: b, `* y" D: F7 ~     Compiler: Microsoft Visual C++ 2008 SP1  
      h) b, D9 C7 x: f3 w: ~      Location:e:\Program Files\Microsoft Visual Studio 9.0 6 C5 T; w% M2 K9 w) Q6 K1 q0 v+ a
          Are thesecorrect [y]/n?  路径是否正确 是的就选y & i5 T/ D- H9 {  p1 g9 Q9 H
          如果没有自动检测出来依次的话step2就选【n】就可以,再顺着提示下来。! T0 I8 A3 ~7 s6 l
    Step 5   - A$ f  [" n6 c/ C6 M$ \8 d/ R
    Make
    $ k. t7 @; d9 `后面就是:
    % x0 x8 p6 {. uload heart_scale.mat(此处无分号): M+ o/ e+ _" D0 ^4 H
    train = heart_scale_inst;
    ( v: P' _6 [/ Y, Q0 btrain_label=heart_scale_label;" R1 B, W7 b8 ?
    test=train;
    : v- ?$ n& K  b+ T) Stest_label=train_label;
    + j, c3 ]- m% ], }# ]9 _model=svmtrain(train_label,train,'-c 2 -g0.01');. k: Y( g! T* _
    [predict_label,accuracy]=svmpredict(test_label,test,model);4 |1 f5 L$ D$ w  M% b6 q; n
    11 X9 G! @5 g/ a' m
    make这一步报错1 i1 G1 V) d& k3 o9 Y
    Error using mex (line 206)4 L  R% h" w1 A( I
    Unable to complete successfully.' X# `3 P! P. d" @. z' e- S
    Error in make (line 1)( g, s- D4 n2 L! f5 H
    % This make.m is for MATLAB and OCTAVE4 e! C; `. `+ c" J
    under Windows, Mac, and Unix! S8 V. J( l1 n7 O& `' ?$ [) ^$ Y
    在尝试了许多方法后,竟然是换了低版本的libsvm,搞定了~~~( I9 E  v; ]: c1 d% A2 C
    2 \% `  H9 ~" v
    2 还有一个make这一步出现的错误3 Make时出错
    ! v1 V: ]/ K5 KUndefined function orvariable 'make'
    ) F8 a$ Q' e8 C9 y解决方法为:
    + M5 X4 k1 z% A2 m: O设置matlab的path
    ; @0 D  r+ D2 J0 ?% Q7 R  P/ g  W   方法file->set path->set subpath(为什么要sub path因为只有这样才能将你要加的文件目录的子文件都加进去,否则只是加了你所要加的那个目录。). @5 f/ P+ X  j5 o3 {6 Z$ u  B
    还要记得把current folder 设为matlab所在的路径
    1 H* a* m1 f8 l. Q- r+ m* I7 ]/ Y3 输入load heart_scale.mat;报错4 `  I4 d. v8 z
    Error using load6 c) J8 V7 g# f7 s# @' Z/ ~* \
    Unable to read file heart_scale.mat;: No) x. L: f, J) M6 H; Z9 i( V
    such file or directory.
    $ I  N# ]; i: S8 \/ T( i! T这个问题是这样的,不应该有最后那个;   去掉分号就可以了。。。(粗心所致。。。不知道别人会不会像我这样。。。)
    3 I/ i" o, c5 \5 D; L( {0 j4( g7 u* H4 ~( f
    load 这一步报错
    7 s6 [3 x, _4 [: _# W' ?9 N7 C7 C% d??? Error using ==>load) C' u% Q: |. O: T7 Q
    Number of columns on line 2 of ASCII file D:\Program
    9 R2 G  c: m# Q6 K, h  `: H2 MFiles\MATLAB2010\matlab\toolbox\libsvm-3.13\heart_scale7 _8 w4 I5 x! \, T# _" w2 M; y% P
    must be the same as previous lines.
    8 {2 U, P8 t1 M* J- X3 Y8 i官方现在不给heart_scale.mat,给的都是VC++下的格式。一些旧版本的工具箱还可以找到mat文件,新版本都没有了。所以load会报错:heart_scalemust be same as previous lines)
    . Z5 U* ^, C  v. m* Q# G一种解决方法是:使用给的一个函数,转化数据。此函数为libsvmread()% g+ P- ~7 e0 x7 P3 v) M1 O' H2 [
    使用如下: [label_vector, instance_matrix] =libsvmread('filename');: V5 y- r- s, Y, v) X2 {
    此处为了跟官方统一名称可以[heart_scale_label,heart_scale_inst] =libsvmread('heart_scale');
    1 ~3 G( f  \1 m注意:由于heart_scale在libsvm-3.11目录下,不是在matlab下,所以直接用libsvmread命令会报错,要买改变当前路径,或者使用[heart_scale_label,heart_scale_inst]=libsvmread('../heart_scale');../代表返回上层路径。9 o2 N* F8 Q3 H2 q, z' l! e. r
    但是最简单的方法是,找到旧版本工具箱的mat文件添加上即可!
      u$ [1 W0 l& M( j" K) z7 X7 y7 [8 @% Q0 d! p; a

    $ c# F% R) Q5 r4 Q! U' K) ?& G0 E, o) Z& o4 q* u

    + G( z- y+ x1 O* c, u5 到svmtrain这一步报错( t* S- }/ D9 y- q  A' ]. @
    ??? Errorusing ==>svmtrain at 1728 W6 M0 E' P% \" y3 E/ A# g  l
    Group mustbe a vector.
    * T# W1 F& Q, d9 R/ Y1 W是因为在添加工具箱的时候没有添加完全,file-Set Path-Add with Subfold ...添加好路径就可以了
    1 Z, D+ R" H) k/ s在使用过程中到目前只遇到这些错误~现在也只是会简单的用libsvm工具箱……
    数学建模社会化
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-5-30 15:55 , Processed in 0.446960 second(s), 62 queries .

    回顶部