Matlab 版 (精华区)

发信人: seesea (马虎学究), 信区: Matlab
标  题: [合集]请教用mex编译C S-Function的问题
发信站: 哈工大紫丁香 (2003年05月07日18:53:54 星期三), 站内信件


────────────────────────────────────────
 honghair (aerospace hacker)          于 2003年04月12日16:13:50 星期六 说道:

我在matlab里编了一个 C S-Function,在用mex编译时出现了错误提示,不能编译成功。察
了好几天了,还没发现错在那儿,着急,很着急。
我把原函数和mex时出现的错误提示都放在fttp//club.hit.edu.cn的
/incoming/invA_subfun_test目录里。请大虾帮我找找错在那儿吧,应该只是语法错误。
在matlab里编 C 函数和直接用C语言编相比,语法规则有什么不同?
着急ing !!

────────────────────────────────────────
 sayyou (下一个任务难度颇高)          于 2003年04月12日20:52:49 星期六 说道:

你程序里第3行 #define abs(a)  (a>0?a:-1*a)
这样不可以,abs已经是编译器再math.h和stdlib.h定义好的库函数了,
在这样重复定义就不可以了
我把这一行换为 #include <math.h>,编译就没有错了。
但是math.h中定义的abs()返回是整型,这个程序里会损失精度,
所以要把abs()换为fabs()。
我看程序后来只有一行用了abs,换为if(fabs(BTB(i,i)) < fabs(BTB(k,i)))
就可以了。
我这里mex可以生成dll文件了,至于simulink中怎样,你试一下。
hehe,费了我半天时间,是不是要请根冰棍啊。
【 在 honghair (aerospace hacker) 的大作中提到: 】
: 我在matlab里编了一个 C S-Function,在用mex编译时出现了错误提示,不能编译成功。察
: 了好几天了,还没发现错在那儿,着急,很着急。
: 我把原函数和mex时出现的错误提示都放在fttp//club.hit.edu.cn的
: /incoming/invA_subfun_test目录里。请大虾帮我找找错在那儿吧,应该只是语法错误。
: 在matlab里编 C 函数和直接用C语言编相比,语法规则有什么不同?
: 着急ing !!

────────────────────────────────────────
 honghair (aerospace hacker)          于 2003年04月12日21:48:45 星期六 说道:

【 在 sayyou (下一个任务难度颇高) 的大作中提到: 】
: 你程序里第3行 #define abs(a)  (a>0?a:-1*a)
: 这样不可以,abs已经是编译器再math.h和stdlib.h定义好的库函数了,
: 在这样重复定义就不可以了
: 我把这一行换为 #include <math.h>,编译就没有错了。
: 但是math.h中定义的abs()返回是整型,这个程序里会损失精度,
: 所以要把abs()换为fabs()。
: 我看程序后来只有一行用了abs,换为if(fabs(BTB(i,i)) < fabs(BTB(k,i)))
: 就可以了。
: 我这里mex可以生成dll文件了,至于simulink中怎样,你试一下。
: hehe,费了我半天时间,是不是要请根冰棍啊。
不要说一根,两根都行啊,呵呵。
yeah!成功了!!我爱你!!!爱死你了!!!!

────────────────────────────────────────
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.246毫秒