C++文件拆分后编译问题
dgmzf 2004-11-09 04:36:06 //有以下程序,编译能运行没有问题
#include <iostream>
#include <string>
class T1 {
private :
std::string filename ;
public :
T1() ;
void print() ;
} ;
T1::T1(){ filename = "dfs" ;}
void T1::print(){ std::cout << filename << std::endl ;}
int main(void)
{
T1 a1 ;
a1.print() ;
return 0 ;
}
//-------但如果把它拆分成几个文件,则编译有警告-----
//文件t1.h
#include <iostream>
#include <string>
class T1 {
private :
std::string filename ;
public :
T1() ;
void print() ;
} ;
//文件t1.C
#include "t1.h"
T1::T1(){ filename = "dfs" ;}
void T1::print(){ std::cout << filename << std::endl ;}
//文件t2.C
#include "t1.h"
int main(void)
{
T1 a1 ;
a1.print() ;
return 0 ;
}
编译时报如下警告:
xlC t2.C t1.C
t2.C:
t1.C:
ld: 0711-224 WARNING: Duplicate symbol: .std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string()
ld: 0711-224 WARNING: Duplicate symbol: .std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Tidy(bool)
ld: 0711-224 WARNING: Duplicate symbol: .std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Refcnt(const char*)
ld: 0711-224 WARNING: Duplicate symbol: .std::allocator<char>::deallocate(char*,unsigned long)
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.