多文件编译的问题,也许很小白,确实想知道问题在哪里

berger 2016-08-08 08:08:29
如题是看cpp时遇到的,讲解extern时,例题是一个给出随机数的算法,然后给出一个测试程序来测试它,测试程序中用到extern声明被调用函数,但编译过程未提及,我是这样编译的:算法函数和测试函数分别编译,得到.o文件,然后写头文件.h(内容就是声明了算法函数原型),然后cfree f5运行测试函数,提示找不到算法函数……换了vc6,同样过程过了……哪里有问题吗……
...全文
231 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-08-09
  • 打赏
  • 举报
回复
建立工程是必须的。
berger 2016-08-09
  • 打赏
  • 举报
回复
引用 7 楼 赵4老师的回复:
将所有rand替换为
呃,就是简单的替换吗?何解?不过换了还是不行,在vc6里同样的步骤就可以,对了我不是建立工程然后添加cpp文件进去的,就是直接编译器打开,文件存在默认的temp文件夹里的,cpp和h文件都存在那个目录下 这个没有关系吧??还是说vc6直接帮我建立了工程什么的?……
berger 2016-08-09
  • 打赏
  • 举报
回复
引用 10 楼 赵4老师的回复:
建立工程是必须的。
好的,了解了,感谢!
berger 2016-08-08
  • 打赏
  • 举报
回复
引用 5 楼 paschen的回复:
http://blog.csdn.net/husion01/article/details/8185671
以我上面写的两个函数为前提,再建立一个头文件,内容: int rand(void); 然后保存为rand.h文件 这样,上面两个函数全部用#include" "形式包含rand.h,然后编译生成.o文件 最后这三个文件放在一个文件夹中,运行两个函数中的主函数 是这个节奏吧?我就是这个时候出现报错,找不到rand()…
berger 2016-08-08
  • 打赏
  • 举报
回复
引用 3 楼 羽飞的回复:
我不知道楼主说的教材是怎么说的,不过extern声明一个函数,就可以告诉编译器在编译的时候,知道有这个函数,他的调用方式是怎么样的,至于函数在哪里,这是在链接的时候查询的函数定义,也可能函数在链接库中,或者在其它的.c或者.cpp文件中
感谢答复,我就把书上的代码贴一下,可能说的更清楚些 随l用于测试的主函数: #include<stdio.h> extern int rand(void); int main(void) { int count; for(count=0;count<5;count++) printf("%hd\n",rand()); return 0; } 这是随机数函数: static unsigned long int next=1; int rand(void) { next=next*1103515245+12345; return (unsigned int)(next/65536)%32768; } 书中未提及如何编译,只是说两个函数一起编译,然后如何如何,我用的方法就是前面说到的,然后编译器提示“undefined reference to rand()” 还有一个“ld returned 1 exit status”
羽飞 2016-08-08
  • 打赏
  • 举报
回复
我不知道楼主说的教材是怎么说的,不过extern声明一个函数,就可以告诉编译器在编译的时候,知道有这个函数,他的调用方式是怎么样的,至于函数在哪里,这是在链接的时候查询的函数定义,也可能函数在链接库中,或者在其它的.c或者.cpp文件中
lm_whales 2016-08-08
  • 打赏
  • 举报
回复
既然是自学,把源码发来,很容易就找到问题了
berger 2016-08-08
  • 打赏
  • 举报
回复
可能说的有点笼统,就是cpp里12.4 随机数函数和静态变量 那一节,例题12.7和12.8,前者是个产生随机数的函数,后者是个用于测试它的函数,如何编译文中未提及,所以我就按照前面教的,建立头文件的方法编译了,就出现了以上的问题,而且看这个例题,实际是加了extern的,网上查了下,好像是说用了extern,就不用建立头文件了是吗?自学,问题可能比较白~
赵4老师 2016-08-08
  • 打赏
  • 举报
回复
myrand
赵4老师 2016-08-08
  • 打赏
  • 举报
回复
将所有rand替换为

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧