找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 1519|回复: 9

[求助]看一下这个多文件操作

[复制链接]
发表于 2009-11-2 06:41:53 | 显示全部楼层 |阅读模式 IP:江苏扬州
我在第一个文件里写了
struct str
{

void print();
};
文件保存为:str.h;
在第二个文件里写了
#include "str.h"
#include <iostream>
using namespace std;
void str::print()
{
cout<<"hello"<<endl;
}
文件保存为:hello.cpp,并进行了编译
在第三个文件里
#include "str.h"
#include <iostream>
using namespace std;
int main()
{
str s;
s.print();
system("pause");
return 0;
}
编译连接时错误: [Linker error] undefined reference to `str::print()' 为什么会这样呢,我在第二个文件已经定义了print(),
发表于 2009-11-2 06:41:59 | 显示全部楼层 IP:江苏扬州
谁会这道题的,看看吧
回复

使用道具 举报

发表于 2009-11-2 06:42:06 | 显示全部楼层 IP:江苏扬州
我用dev-c++编译的,建立个空project,加入hello.cpp,和main所在的文件,编译.

makefile什么的我还不会用.

如果hello.cpp文件的内容是str.h的定义文件,把hello.cpp改为str.cpp,管理起来更方便.
回复

使用道具 举报

发表于 2009-11-2 06:42:12 | 显示全部楼层 IP:江苏扬州
第二个文件和第三个文件放在一起编译应该就能运行了
回复

使用道具 举报

发表于 2009-11-2 06:42:19 | 显示全部楼层 IP:江苏扬州
woodhead,谢谢你!
回复

使用道具 举报

发表于 2009-11-2 06:42:28 | 显示全部楼层 IP:江苏扬州
以下是引用ElfDN在2006-4-2 11:26:00的发言:

第二个文件和第三个文件放在一起编译应该就能运行了



谢谢
你的意思是说,将两个文件合并成一个文件吗?
我是不想把他们合并的,用woodhead的方法在DEV中可以的。在VC中怎么用呢,谢谢
回复

使用道具 举报

发表于 2009-11-2 06:42:32 | 显示全部楼层 IP:江苏扬州
如果用VC的话把所有文件都加到project里面就行了,如果是用cc,gcc之类的把所有的文件都写在makefile就可以了。
回复

使用道具 举报

发表于 2009-11-2 06:42:35 | 显示全部楼层 IP:江苏扬州
以下是引用everajax在2006-4-2 12:48:00的发言:

如果用VC的话把所有文件都加到project里面就行了,如果是用cc,gcc之类的把所有的文件都写在makefile就可以了。

嘻嘻!我知道怎么用了。
我错在编译第二个文件后,选择了“文件”的下拉彩旦中的“关闭工作区”,导致编译第三个文件时说找不到struct的定义。

还有个问题问: ^_^ ^_^ 怎么用makefile呢,是不是要在dos里运行呢,能说详细点吗?(我有个makefile的例子,但不知道如何用) ^_^ ^_^
回复

使用道具 举报

发表于 2009-11-2 06:42:37 | 显示全部楼层 IP:江苏扬州
那在vc++中还是不行啊
Linking...
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
Debug/hello.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.
hello.exe - 1 error(s), 0 warning(s)
  什么意思啊
怎么改啊
回复

使用道具 举报

发表于 2009-11-2 06:42:40 | 显示全部楼层 IP:江苏扬州
以下是引用linlin在2006-4-1 14:29:00的发言:
我在第一个文件里写了
struct str
{

void print();
};
文件保存为:str.h;
在第二个文件里写了
#include "str.h"
#include <iostream>
using namespace std;
void str::print()
{
cout<<"hello"<<endl;
}
文件保存为:hello.cpp,并进行了编译//文件名改为:hello.h 别编译
在第三个文件里
#include "str.h"
#include <iostream>
using namespace std;//改为:#include "hello.h"
int main()
{
str s;
s.print();
system("pause");
return 0;
}
编译连接时错误: [Linker error] undefined reference to `str::print()' 为什么会这样呢,我在第二个文件已经定义了print(),

运行结果为:hello
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-30 03:36 , Processed in 0.189032 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表