vs2013错误error LNK1120: vs无法解析的外部命令令 该怎么解决啊。PS:pure菜鸟

10:50 提问
fatal error LNK1120: 1 个无法解析的外部命令
在//初识输入输出
/*程序1的作用是实现两个数的相加*/
#define zt system("pause")
int jia(int &a,int &b)
return (a+b);
int main()
int jia(int &a,int &b);
cout&&"请输入两个相加的数字"&
cin &&a&&b;
z=jia(a,b);
cout&&"输出相加后数字的值"&&
cout &&"a+b="&&z&&
cout &&jia(a,b)&&
显示的错误是fatal error LNK1120: 1 个无法解析的外部命令
按赞数排序
函数原型是这个: int jia(int &a,int &b);
main中调用的是这个:
z=jia(a,b);
c++认为两者是完全不同的函数,因此认为第二个没有定义,所以链接报错.
在//初识输入输出
/*程序1的作用是实现两个数的相加*/
#define zt system("pause")
int jia(int &a,int &b)
return (a+b);
int main()
//int jia(int &a,int &b);//去掉此句
cout&&"请输入两个相加的数字"& cin &&a&&b;
z=jia(a,b);
cout&&"输出相加后数字的值"&&
cout &&"a+b="&&z&&
cout &&jia(a,b)&&
显示的错误是fatal error LNK1120: 1 个无法解析的外部命令
其他相似问题欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 4931 人关注过本帖
标题:求助!VS2005中 “无法解析的外部命令”问题
等 级:论坛游民
帖 子:76
专家分:61
结帖率:75%
&&已结贴√
&&问题点数:40&&回复次数:11&&&
求助!VS2005中 “无法解析的外部命令”问题
刚刚看了命名空间,就试用了一下,结果出现“无法解析的外部命令” 望解释一下
#ifndef _STACK_H_
#define _STACK_H_
namespace STACK
&&& const int maxsize=50;
&&& int UNDERFLOW=0;//下溢
&&& int OVERFLOW=0;//上溢
&&& template&class T&
&&& class stack
&&& private:
&&&&&&&&T *
&&&&&&&&//该栈的最大长度
&&& public:
&&&&&&&&stack(int num=maxsize);
&&&&&&&&~stack();
&&&&&&&&void push(T);
&&&&&&&&T pop();
&&&&&&&&T gettop();
&&&&&&&&int length();
&&&&&&&&bool isempty();
&&&&&&&&void print()
//stack.cpp
#include&iostream&
#include&stack.h&
template&class T&
STACK::stack&T&::stack(int num = maxsize)
&&& data=new T(num);
&&& index=0;
template&class T&
STACK::stack&T&::~stack()
&&& delete []
template&class T&
T STACK::stack&T&::gettop()
&&&&&&&&if(index==0)
&&&&&&&&&&&&throw UNDERFOLW;
&&&&&&&&return data[index];
&&& catch UNDERFLOW
&&&&&&&&cout&&&发生下溢&&&
template&class T&
void STACK::stack&T&::push(T t)
&&&&&&&&if(index==max)
&&&&&&&&&&&&throw OVERFLOW;
&&&&&&&&data[index];
&&&&&&&&++
&&& catch OVERFLOW
&&&&&&&&cout&&&发生上溢&&&
template&class T&
T STACK::stack&T&::pop()
&&&&&&&&if(index==0)
&&&&&&&&&&&&throw UNDERFLOW;
&&&&&&&&--
&&&&&&&&return data[index];
&&& catch UNDERFLOW
&&&&&&&&cout&&&发生下溢&&&
template&class T&
int STACK::stack&T&::length()
template&class T&
bool STACK::stack&T&::isempty()
&&& if(index==max)
template&class T&
void STACK::stack&T&::print() const
&&& int j=length();
&&& for(int i=0;i&j;++i)
&&&&&&&&cout&&data[i]&&' ';
&&& cout&&
//main.cpp
#include&iostream&
#include&stack.h&
void main()
&&& STACK::stack&int& intstack(10);
&&& STACK::stack&char& charstack(8);
&&& if(intstack.isempty()==true)
&&&&&&&&cout&&&Int stack is empty&&&
&&&&&&&&cout&&&Int stack isn't empty&&&
&&& for(int i=0;i&9;++i)
&&&&&&&&intstack.push(i);
&&& intstack.print();
&&& for(int i=0;i&5;++i)
&&&&&&&&ch='a'+i;
&&&&&&&&charstack.push(ch);
&&& charstack.print();
结果链接时出错:
1&------ 已启动生成: 项目: stack, 配置: Debug Win32 ------
1&正在编译...
1&main.cpp
1&正在链接...
1&main.obj : error LNK2005: &int STACK::UNDERFLOW& (?UNDERFLOW@STACK@@3HA) 已经在 stack.obj 中定义
1&main.obj : error LNK2005: &int STACK::OVERFLOW& (?OVERFLOW@STACK@@3HA) 已经在 stack.obj 中定义
1&main.obj : error LNK2019: 无法解析的外部符号 &public: __thiscall STACK::stack&int&::~stack&int&(void)& (??1?$stack@H@STACK@@QAE@XZ),该符号在函数 _main 中被引用
1&main.obj : error LNK2019: 无法解析的外部符号 &public: __thiscall STACK::stack&char&::~stack&char&(void)& (??1?$stack@D@STACK@@QAE@XZ),该符号在函数 _main 中被引用
1&main.obj : error LNK2019: 无法解析的外部符号 &public: void __thiscall STACK::stack&char&::print(void)const & (?print@?$stack@D@STACK@@QBEXXZ),该符号在函数 _main 中被引用
1&main.obj : error LNK2019: 无法解析的外部符号 &public: void __thiscall STACK::stack&char&::push(char)& (?push@?$stack@D@STACK@@QAEXD@Z),该符号在函数 _main 中被引用
1&main.obj : error LNK2019: 无法解析的外部符号 &public: void __thiscall STACK::stack&int&::print(void)const & (?print@?$stack@H@STACK@@QBEXXZ),该符号在函数 _main 中被引用
1&main.obj : error LNK2019: 无法解析的外部符号 &public: void __thiscall STACK::stack&int&::push(int)& (?push@?$stack@H@STACK@@QAEXH@Z),该符号在函数 _main 中被引用
1&main.obj : error LNK2019: 无法解析的外部符号 &public: bool __thiscall STACK::stack&int&::isempty(void)& (?isempty@?$stack@H@STACK@@QAE_NXZ),该符号在函数 _main 中被引用
1&main.obj : error LNK2019: 无法解析的外部符号 &public: __thiscall STACK::stack&char&::stack&char&(int)& (??0?$stack@D@STACK@@QAE@H@Z),该符号在函数 _main 中被引用
1&main.obj : error LNK2019: 无法解析的外部符号 &public: __thiscall STACK::stack&int&::stack&int&(int)& (??0?$stack@H@STACK@@QAE@H@Z),该符号在函数 _main 中被引用
1&F:\Users\Administrator\Documents\Visual Studio 2005\Projects\stack\Debug\stack.exe : fatal error LNK1120: 9 个无法解析的外部命令
1&生成日志保存在“file://f:\Users\Administrator\Documents\Visual Studio 2005\Projects\stack\Debug\BuildLog.htm”
1&stack - 12 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========
请问这是什么问题,如何解决啊?
搜索更多相关主题的帖子:
等 级:等待验证会员
帖 子:128
专家分:720
模板类的申明和定义不能跨两个文件,所有关于 你的 stack 类的声明和定义,包括函数定义,都必须放到 stack.h 文件里,跨文件都会出现编译问题,这个是编译器问题,但是,目前还没有哪个编译器支持模板类的申明和定义分离(跨文件)。
C++ 用无参数构造函数生成对象时候请勿在构造函数后添加无用的那一对括号,否则有可能会被当成函数声明而忽略,嗯,栈上构建的时候就是这样。
等 级:小飞侠
帖 子:765
专家分:2103
我用2010时也出现过这类错误
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
&&得分:10&
在main.cpp中,把stack.cpp也包含进去。
这样试试:#include&iostream&
#include&stack.h&
#include&stack.cpp&
using namespace
等 级:论坛游民
帖 子:76
专家分:61
回复 4楼 zhoufeng1988
修改之后,那个无法解析的外部命令没了
但有了重定义问题:
1&------ 已启动生成: 项目: stack, 配置: Debug Win32 ------
1&正在编译...
1&stack.cpp
1&Generating Code...
1&Compiling...
1&main.cpp
1&Generating Code...
1&正在链接...
1&stack.obj : error LNK2005: &int STACK::UNDERFLOW& (?UNDERFLOW@STACK@@3HA) 已经在 main.obj 中定义
1&stack.obj : error LNK2005: &int STACK::OVERFLOW& (?OVERFLOW@STACK@@3HA) 已经在 main.obj 中定义
1&F:\Users\Administrator\Documents\Visual Studio 2005\Projects\stack\Debug\stack.exe : fatal error LNK1169: 找到一个或多个多重定义的符号
1&生成日志保存在“file://f:\Users\Administrator\Documents\Visual Studio 2005\Projects\stack\Debug\BuildLog.htm”
1&stack - 3 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========
在那部分加了#ifndef...也没用:程序代码:#ifndef _UNDERFLOW_
#define _UNDERFLOW_
&&& int UNDERFLOW=<font color=#;//下溢
#ifndef _OVERFLOW_
#define _OVERFLOW_
&&& int OVERFLOW=<font color=#;//上溢
这个该怎么办啊?
等 级:等待验证会员
帖 子:128
专家分:720
回复 5楼 紫凤双飞
都说过了,把stack.cpp 的内容放到 stack.h 里面去,stack类的所有信息都在一个文件就可以了
C++ 用无参数构造函数生成对象时候请勿在构造函数后添加无用的那一对括号,否则有可能会被当成函数声明而忽略,嗯,栈上构建的时候就是这样。
等 级:论坛游民
帖 子:76
专家分:61
回复 6楼 tisyang
不是,是可以跨文件的,就像4楼说的那样,而且之前看到一本书上提到的,所以才会尝试嘛
等 级:论坛游民
帖 子:76
专家分:61
回复 6楼 tisyang
而且现在是重定义的问题啊
等 级:等待验证会员
帖 子:128
专家分:720
以下是引用紫凤双飞在 15:26:14的发言:
不是,是可以跨文件的,就像4楼说的那样,而且之前看到一本书上提到的,所以才会尝试嘛
跨文件的在C++标准里是 export 关键字,但是貌似主流编译器都不支持这个关键字,好像是因为实现起来过于复杂。
具体可以看这篇文章和评论。
/converse/archive//9695.html
C++ 用无参数构造函数生成对象时候请勿在构造函数后添加无用的那一对括号,否则有可能会被当成函数声明而忽略,嗯,栈上构建的时候就是这样。
等 级:等待验证会员
帖 子:128
专家分:720
&&得分:30&
回复 8楼 紫凤双飞
重定义是因为你同时包含了 头文件和实现文件,其实就算你同时包含不出现任何问题的话,你的设计就有问题了。
将类的声明和定义分开放到两个文件的目的是将具体的实现隐藏,不暴露给外部用户。一般这样分开设计的类,用的时候只要包含头文件就可以了,如果类的声明没有变,但是定义发生了改变的话,引用该类的源文件不需要重新编译,只需要重新链接就可以了。
但是你这样的分开设计,必须包含实现文件的话,和本来放到一个文件有什么区别呢,不能隐藏细节。类的任何改变都还需要将源文件重新编译和链接。只是看起来分开了而已,实质上还是连在一起的。
C++ 用无参数构造函数生成对象时候请勿在构造函数后添加无用的那一对括号,否则有可能会被当成函数声明而忽略,嗯,栈上构建的时候就是这样。
版权所有,并保留所有权利。
Powered by , Processed in 0.057858 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved小木虫 --- 600万学术达人喜爱的学术科研平台
&&查看话题
【求助】运行fortran程序出现错误 : error LNK2019
怎么回事啊
运行fortran程序时出现下面的错误,请大虾指点
------------------------------------------------------------------------
1>Linking...
1>amsa.obj : error LNK2019: 无法解析的外部符号 _MPI_INIT,该符号在函数 _MAIN__ 中被引用
1>amsa.obj : error LNK2019: 无法解析的外部符号 _MPI_COMM_RANK,该符号在函数 _MAIN__ 中被引用
1>amsa.obj : error LNK2019: 无法解析的外部符号 _MPI_COMM_SIZE,该符号在函数 _MAIN__ 中被引用
1>amsa.obj : error LNK2019: 无法解析的外部符号 _ZBQLINI,该符号在函数 _MAIN__ 中被引用
1>amsa.obj : error LNK2019: 无法解析的外部符号 _CPU_TIME_,该符号在函数 _MAIN__ 中被引用
1>amsa.obj : error LNK2019: 无法解析的外部符号 _ZBQLU01,该符号在函数 _MAIN__ 中被引用
1>amsa.obj : error LNK2019: 无法解析的外部符号 _ZBQLPOI,该符号在函数 _MAIN__ 中被引用
1>amsa.obj : error LNK2019: 无法解析的外部符号 _ZBQLNOR,该符号在函数 _MAIN__ 中被引用
1>amsa.obj : error LNK2019: 无法解析的外部符号 _MPI_FINALIZE,该符号在函数 _MAIN__ 中被引用
1>amsa.obj : error LNK2001: 无法解析的外部符号 _MPI_NULL_COPY_FN
1>amsa.obj : error LNK2001: 无法解析的外部符号 _MPI_NULL_DELETE_FN
1>amsa.obj : error LNK2001: 无法解析的外部符号 _MPI_DUP_FN
1>Debug\AMSA.exe : fatal error LNK1120: 12 个无法解析的外部命令
1>Build log written to&&"file://E:\fortran\AMSA\AMSA\Debug\BuildLog.htm"
1>AMSA - 13 error(s), 0 warning(s)
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个
------------------------------------------------------------------------
程序一开始有这样几行
& & call MPI_INIT(ierror)& && && && && && && && & ! initialize MPI&&
& && &call MPI_COMM_RANK(MPI_COMM_WORLD,rank,ierror)
& && &call MPI_COMM_SIZE(MPI_COMM_WORLD,size,ierror)
& && &call ZBQLINI(rank+rn)
& && &call cpu_time_(t0)& && && && && && && && & !initialize CPU time& && &&&
& && &call cpu_time(ti)
我用的Visual 2008和Intel Fortran,刚装了MPICH2,但是好像没什么用。这是什么原因,该怎么解决呢?
我装了MPICH2,这里面有mpi库,我在“工具--选项”里设置了,但是有些设置可能和网上查的那些不太一样,我不太懂,麻烦大虾说的再详细点
我不是大虾,我说不详细,因为我不用 mpi,即使编程也不用 IDE
北京学而思教育科技有限公司 地址:北京市海淀区北三环甲18号中鼎大厦A座1层102室 电话:010-
浏览器进程
打开微信扫一扫
随时随地聊科研}

我要回帖

更多关于 无法解析外部命令 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信