标题:不同文件如何编译连接
只看楼主
charderkk
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2010-8-24
结帖率:100%
已结贴  问题点数:10 回复次数:3 
不同文件如何编译连接
编了个求中位数的程序 median.cpp
#include<vector>
#include<algorithm>
#include<stdexcept>
#include"median.h"
using namespace std;
typedef vector<double>::size_type vec_sz;
double median(vector<double> vec){
    vec_sz size=vec.size(),mid=size/2;
    if(size==0)
        throw domain_error("vector is empty");
    sort(vec.begin(),vec.end());
    return size%2==0?(vec[mid]+vec[mid-1])/2:vec[mid];
}
又写了头文件 median.h
#ifndef GUARD_median_h
#define GUARD_median_h

#include<vector>
double median(std::vector<double>);

#endif
但在一个程序test.cpp
#include<iostream>
 #include<string>
 #include<vector>
 #include"median.h"
 using namespace std;
 typedef vector<double>::size_type vec_sz;

 int main(){
 vector<double> homework;
 double x;
 while(cin>>x)
    homework.push_back(x);
 
 cout<<median(homework)<<endl;
 return 0;
 }

中调用时,在cmd中编译时出现以下提示
E:\cpp>g++ -o test test.cpp
C:\Users\charderkk\AppData\Local\Temp/ccsPWT7J.o:test.cpp:(.text+0x222): undefined
 reference to `median(std::vector<double, std::allocator<double> >)'
collect2: ld returned 1 exit status

请问是什么原因,还有就是在通常的文件编译连接有什么要注意的地方

[ 本帖最后由 charderkk 于 2011-1-26 18:09 编辑 ]
搜索更多相关主题的帖子: return 中位数 
2011-01-26 16:51
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
compile一个个cpp文件
将它们link起来
2011-01-27 09:39
zhoufeng1988
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
注 册:2009-5-31
得分:10 
Windows下:g++ median.cpp test.cpp -o test.exe
或者写一个MakeFile。
或者是
    g++ -c median.cpp -o median.obj
    g++ -c test.cpp -o test.obj
    g++ median.obj test.obj -o test.exe
2011-01-27 10:52
charderkk
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2010-8-24
得分:0 
回复 3楼 zhoufeng1988
非常感谢
2011-01-27 12:37



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-331604-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.130411 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved