| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 441 人关注过本帖
标题:[求助]这个错在哪了
只看楼主 加入收藏
aloneboy
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-7-25
收藏
 问题点数:0 回复次数:5 
[求助]这个错在哪了
帮忙看一下:
#include<iostream.h>
long gcd1(int x,int y);
void main()
{
int a,b;
cout<<"enter two numbers:";
cin>>a>>b;
long f=gcd1(a,b);
cout<<f<<endl;
}
long gcdl(int x,int y)
{
if(x%y==0)
return y;
else
return(y,x%y);
}
错误是:
0.obj : error LNK2001: unresolved external symbol "long __cdecl gcd1(int,int)" (?gcd1@@YAJHH@Z)
Debug/10.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.
搜索更多相关主题的帖子: blank include numbers return target 
2006-07-25 21:35
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
收藏
得分:0 
我运行过你的程序,直接复制确实会出现链接错误,这个错误其实就是C++编译器进行的名字改编将你的函数名改了((?gcd1@@YAJHH@Z),但是连接的时候有解释不了这个符号((?gcd1@@YAJHH@Z)被编译器认为是外部引用了(extern)
因为你的函数虽然有前置声明,但是没有定义

这个问题是由于你的错误,你将
long gcdl(int x,int y)
{
     if(x%y==0)
         return y;
     else
         return(y,x%y);
}

的 gcdl打错了  应该是 gcd1

c++/C + 汇编 = 天下无敌
2006-07-25 21:51
guoguo10000
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-7-19
收藏
得分:0 
好像把gcd1改成gcdl;
就行了
2006-07-25 21:52
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
收藏
得分:0 
当然可以了,本来就是你自己打错,我观察了很久才发现

c++/C + 汇编 = 天下无敌
2006-07-25 22:02
ecbtnrt
Rank: 1
等 级:新手上路
威 望:1
帖 子:189
专家分:0
注 册:2006-4-16
收藏
得分:0 
真是不容易啊!

我为你痴,为你狂!
2006-07-26 12:11
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
收藏
得分:0 
以下是引用ecbtnrt在2006-7-26 12:11:01的发言:
真是不容易啊!

所以以后建议大家起的名称要规范


c++/C + 汇编 = 天下无敌
2006-07-26 12:13
快速回复:[求助]这个错在哪了
数据加载中...
 
   



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

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