IDE:VC2010学习版
代码:
//////////////////////////////////////////////////////
//ClassTest.h
#ifndef CLASSTEST_H
#define CLASSTEST_H
#include <string>
class ClassTest{
public:
ClassTest(std::string n,std::string a){
name = n;
address = a;
}
std::string getName() const;
std::string getAddress() const;
private:
std::string name;
std::string address;
};
#endif
////////////////////////////////////////////////////////
//ClassTest.cpp
#include "ClassTest.h"
std::string ClassTest::getName() const{
return name;
}
std::string ClassTest::getAddress() const{
return address;
}
/////////////////////////////////////////////////////////
//TEST2.CPP
#include "ClassTest.h"
#include <iostream>
using std::cout;
using std::endl;
int main(){
ClassTest ct("yzj","weihai");
cout<<ct.getName()<<endl;
cout<<ct.getAddress()<<endl;
system("pause");
return 0;
}
//////////////////////////////////////////////////////////
--------------------------------------------------------------------------------------------------------------
现在提示1>TEST2.obj : error LNK2019: 无法解析的外部符号 "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall ClassTest::getAddress(void)const " (?getAddress@ClassTest@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ),该符号在函数 _main 中被引用
1>TEST2.obj : error LNK2019: 无法解析的外部符号 "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall ClassTest::getName(void)const " (?getName@ClassTest@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ),该符号在函数 _main 中被引用
1>E:\练习\CPP\TEST2\Debug\TEST2.exe : fatal error LNK1120: 2 个无法解析的外部命令
-------------------------------------------------------------------------------------------------------------
但我把两个函数的定义写到头文件就能运行,这是什么原因?我用的IDE是VC++2010学习版,同样的程序可以在VC6.0下通过,这是为什么呢?
再顺便问下,我的IDE有时候拖选代码和移动IDE窗口程序会重启,是WIN7的原因还是IDE的原因?
10 个解决方案
#1
using std::string
#2
using std::string;
#3
加在哪个文件?我都实验了,没用,我感觉是主函数找不到被调用的函数,头文件我都加了,为什么会出现这种情况呢?
#4
e 我vs08没问题啊,我试试2010
#5
应该是编写这个工程文件的时候调用的别的工程文件中的lib,你忘记在编译头中加入include中了,或者加入了之后重复定义导致定义失败,建议检查头文件的包含关系已经是否已包含
#6
难道是学习版不支持这个功能?额,我也下个VS08 试试。。
#7
2010也没问题,估计学习版少东西吧,搜索下吧
#8
加了using std::string;还没有那可能是你的VC有问题
#9
额,根据5楼的说法,我重新建了个项目,编译通过了。。
#10
原来用的这个项目实验过一些别的代码。我没重新建就直接用的。
#1
using std::string
#2
using std::string;
#3
加在哪个文件?我都实验了,没用,我感觉是主函数找不到被调用的函数,头文件我都加了,为什么会出现这种情况呢?
#4
e 我vs08没问题啊,我试试2010
#5
应该是编写这个工程文件的时候调用的别的工程文件中的lib,你忘记在编译头中加入include中了,或者加入了之后重复定义导致定义失败,建议检查头文件的包含关系已经是否已包含
#6
难道是学习版不支持这个功能?额,我也下个VS08 试试。。
#7
2010也没问题,估计学习版少东西吧,搜索下吧
#8
加了using std::string;还没有那可能是你的VC有问题
#9
额,根据5楼的说法,我重新建了个项目,编译通过了。。
#10
原来用的这个项目实验过一些别的代码。我没重新建就直接用的。