首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

求助,编程问题!

大侠,我找到你发给Johnyoung的帖子了,我式了一下,但按照那个方法把以前的P&E的名字改成自己的库的名字,然后我编译后怎么找不到自己的库做到什么地方去了?丢了?还有,怎么用这个库啊,我怎么调这个库里面的函数啊?谢谢,多谢帮助,这个问题解决了真又学了一个高招
水泡泡
 我的QQ是:52449804 
 我的网站是: www.dyic.com.cn
 欢迎访问和留言跟我联系
库的名字并不是去改target的名字,库的名字是在你选了libmaker for HC12以后,在target栏里面生成出来的libmaker for HC12选项里面有个library filename里面设定的。至于库放在什么地方,你在设置你库的名字的时候也是可以设定路径的。另外,取名字的时候要记得加上后缀,比如要取成test.lib, 不要取成test。
至于调用的话,就是通过头文件给出函数形式接口,把你的库加入到工程文件中去,然后调用就可以了
那个做库的手册的确比较难懂,看的会比较懵。你如果想把整个工程做成库可以用我所说的方法。但是如果只想拿几个文件出来做成库的话还是需要用libmaker来做
大侠,我不想研究Libmaker的手册,越看越难受,难过的想把显示器给砸了,我还是按照你说的方法做比较容易。我按你的方法试了,但生成的库之后,把它添加到工程里,用"add files"的方法,把那个.lib加进去,但是出现30多个错误,都是L1100的错误,说Segments . absSeg246 (0x0) and .absSeg520 (0x0) overlap,后面全是overlap的错误。是哪里没弄好?
水泡泡
 我的QQ是:52449804 
 我的网站是: www.dyic.com.cn
 欢迎访问和留言跟我联系
大侠,我不想研究Libmaker的手册,越看越难受,难过的想把显示器给砸了,我还是按照你说的方法做比较容易。我按你的方法试了,但生成的库之后,把它添加到工程里,用"add files"的方法,把那个.lib加进去,但是出现30多个错误,都是L1100的错误,说Segments . absSeg246 (0x0) and .absSeg520 (0x0) overlap,后面全是overlap的错误。是哪里没弄好?
水泡泡
 我的QQ是:52449804 
 我的网站是: www.dyic.com.cn
 欢迎访问和留言跟我联系
当然会这样咯,生成的库其实就是你前面的那些文件,你必须把你那些文件从库里面移走才行。库是那些文件的替代者,不要和文件重复用!
要把哪些文件移走啊?我已经把Main.c别的什么Include等的都删去了,然后就写了一个函数,还出现这个错误,还要移什么文件?
水泡泡
 我的QQ是:52449804 
 我的网站是: www.dyic.com.cn
 欢迎访问和留言跟我联系
这个就要看你的库里面包涵了哪些文件,另外有时候尽管工程里面没有显现出来,但是你的文件还是包含在工程里面的。另外,这种overlap还可能和你的存储空间的分配有关。当然,如果你在生成库之前的工程没有什么问题的话,那肯定是你有什么文件没有移走的缘故
OK了,我把除了Main.C外的所有文件都搞掉了终于可以了。还有一个问题,我在库里面的一个函数要用到外面的(主函数的)一个全局变量,那么我在这个库文件的开头用extern声明一下这个全局变量,然后在这个库里面用这个全局变量(这个变量在主函数里面定义的)可以么?影响不影响结果啊
水泡泡
 我的QQ是:52449804 
 我的网站是: www.dyic.com.cn
 欢迎访问和留言跟我联系
可以,当然可以这么做。
呵呵,这个其实你自己动手试一下就ok了,不必问的,实践出真知嘛。
不过,建议你最好不要这么做,因为库是给人用的,如果库去调用外部的变量不是很好。可以把变量变成库里面的,而主函数用extern来声明使用
谢谢,刚才又碰到一个问题。我想两个.c文件共同包含一个头文件,比如main.c里面包含#include "my.h",然后在另一个fun.c里面我还要#include "my.h", 而我不想用在fun.c里面用extern的方法,因为变量太多了,我只想在头文件my.h中做文章,该怎么弄才不出现变量重复定义的错误呢?我仿照软件自带的头文件中用#ifdef等方法,好像不行啊
水泡泡
 我的QQ是:52449804 
 我的网站是: www.dyic.com.cn
 欢迎访问和留言跟我联系
直接在头文件里面定义成全局变量,extern char a;
如果象这样直接定义全局变量extern char a;会出现警告错误。L1823:External object a in \...\a1.c.o created by default. 有没有更完美的解决方案呢?虽然警告错误不影响结果的执行
水泡泡
 我的QQ是:52449804 
 我的网站是: www.dyic.com.cn
 欢迎访问和留言跟我联系
我想把部分代码变成汇编,比如 int a;int b;b=a;
我在把这部分变成汇编的时候怎么开辟变量空间定义a,b这两个变量呢?
水泡泡
 我的QQ是:52449804 
 我的网站是: www.dyic.com.cn
 欢迎访问和留言跟我联系
看糊涂了啊
返回列表