鱼C论坛

 找回密码
 立即注册
查看: 1892|回复: 9

VC6.0编译连接错误

[复制链接]
发表于 2015-2-16 22:56:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1.obj : error LNK2001: unresolved external symbol "public: void __thiscall Date::add_day(int)" (?add_day@Date@@QAEXH@Z)
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
Debug/1.exe : fatal error LNK1120: 2 unresolved externals

为什么在编译的时候会出现这种情况错误提示 到底是我代码些错了还是连接的问题  下面是代码

#include<iostream>
using namespace std;
struct Date
{
int d,m,y;
int a,s,q;
void init_date(int dd,int mm,int yy);
void init(int dd,int mm,int yy);
void add_year (int n);
void add_month(int n);
void add_day(int n);
};
Date my_birthday;
void f()
{
Date today;
today.init_date(02,26,2014);
my_birthday.init(06,19,1987);
Date tomorrow=today;
tomorrow.add_day(1);
}
void Date::init(int dd,int mm,int yy)
{
d=dd;
m=mm;
y=yy;
}
void Date::init_date(int dd,int mm,int yy)
{
   a=dd;
   s=mm;
   q=yy;
}
int  main()
{
cout<<"d"<<"m"<<"y";
cout<<"a"<<"s"<<"q";
void Date::init_date(int dd,int mm,int yy);
void Date::init(int dd,int mm,int yy);
return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-2-17 11:53:15 | 显示全部楼层
一看就知道你把工程新建错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-17 11:54:00 | 显示全部楼层
注意:你要运行这段代码就要放到控制台项目中编译-链接-执行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-17 11:54:26 | 显示全部楼层
问题解决了别忘了给我评分。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-17 15:48:24 | 显示全部楼层
freeparty 发表于 2015-2-17 11:54
注意:你要运行这段代码就要放到控制台项目中编译-链接-执行。

对啊  没建错呀  我是在控制台的呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-17 16:02:28 | 显示全部楼层
943566987 发表于 2015-2-17 15:48
对啊  没建错呀  我是在控制台的呀

一、原因1,你用vc建了一个控制台程序,它的入口函数应该是main, 而你使用了WinMain。
2、你用vc打开了一个.c/.cpp 文件,然后直接编译这个文件,这个文件中使用了WinMian而不是main作为入口函数。vc这时的默认设置是针对控制台程序的。Windows子系统设置错误,提示:libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main,Windows项目要使用Windows子系统,而不是Console。
二、 解决方法:1、进入【project】->【setting】->c/c++, 在category(类型目录)中选择preprocessor(预处理器),在processor definitions中删除_console, 添加_windows。
2、进入【project】->【setting】->Link(连接), 在Project options中将 /subsystem:console改为/subsystem:windows。关于ddk集成于vc编译环境的搭建出现error LNK2001: unresolved external symbol__imp__KeGetCurrentIrql@0的解决方法。对于习惯使用VC++集成编译环境的人来说用DDK编译驱动程序的痛苦是无法想象的,如何才能用VC++的集成编译环境编译驱动程序?经过一段时间的摸索以及对网络上的其它帖子的精华进行总结,特将搭建集成开发环境的详细过程描述如下:首先安装VC++6.0,接下来安装winddk,最后安装DriverStudio。三者安装顺序不能出错,如果出错了卸载再安装顺序重新安装好就行。
具体搭建方式如下:
1.用vc新建一个工程。
2. 在"project"选项卡中,选择win32 Application,选择一个空工程。
3. 将两个源文件Driver.h和Driver.cpp拷贝到工程目录中,并添加到工程中。(如果没有,可以先跳过此步,到完成第七步后再编写源文件)。
4. 增加新的编译版本,去掉Debug 和Release 版本。选择“Build|Configurations”点击“Add”在配置框中直接输入“Driver Check Edtion”。这一步是将DDK编译版本添加到该工程中。Debug和Release版本不去掉也可以。
5. 修改工程属性。选择"Project|Setting",或者直接按下Alt+F7键,弹出"Project Settings"。在对话框中,选择“General”选项卡。将Intermediate files和Output files改为MyDriver_Check.   选择C/C++选项卡,将原有的Project Options 内容全部删除替换成如下内容: /nologo /Gz /MLd /W3 /WX /Z7 /Od /D WIN32=100 /D _X86_=1 /D WINVER=0X500 /D DBG=1 /Fo"MyDriver_Check/" /Fd"MyDriver_Check/" /FD /c选择Link选项卡,将原有的Project Options 内容全部删除,替换成如下内容:ntoskrnl.lib hal.lib /nologo /base:"0x10000" /stack:0x400000,0x1000 /entry:"DriverEntry" /subsystem:console /incremental:no /pdb:"MyDriver_Check/driver.pdb" /debug /machine:I386 /nodefaultlib /out:"MyDriver_Check/driver.sys" /pdbtype:sept /subsystem:native /driver /SECTION:INIT,D /RELEASE /IGNORE:4078   如果不包含hal.lib,会使得编译出错,出现如下错误。
error LNK2001: unresolved external symbol __imp__KeGetCurrentIrql@0
6. 修改VC的lib目录和include目录。
在vc中选择"Tools"|"Options",在弹出的对话框中选择“Directories”选项卡。在“Show directories for”下拉菜单中选择“Include files”菜单,添加“D:\WINDDK\2600\INC\W2k”和“D:\WINDDK\2600\INC\DDK\WDM\W2k”并将这两个目录置于最上。如果提示没有包含什么头文件,直接搜索文件名,找到路径,添加目录就行。在"Show directories for "下拉菜单中选择“Library files”菜单,添加目录“D:\WINDDK\2600\LIB\W2k\I386”并置于最上端。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-17 16:04:41 | 显示全部楼层
要么就是编译环境出问题了,你把这个备份一下然后改成HelloWorld试一试,编译可以成功吗,如果HelloWorld可以那就说明编译环境是好的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-18 00:02:47 | 显示全部楼层
这个程序好复杂哟;下面这是啥意思,没看明白: struct Date 是个啥东西?(视频我看到40集了)
struct Date
{
int d,m,y;
int a,s,q;
void init_date(int dd,int mm,int yy);
void init(int dd,int mm,int yy);
void add_year (int n);
void add_month(int n);
void add_day(int n);
};[/code]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-18 09:58:56 | 显示全部楼层
freeparty 发表于 2015-2-17 16:04
要么就是编译环境出问题了,你把这个备份一下然后改成HelloWorld试一试,编译可以成功吗,如果HelloWorld可 ...

我也不知道是编译器的问题还是 每次我把项目关了然后从新连接的时候就会出现这样的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-18 10:01:04 | 显示全部楼层
haiouda 发表于 2015-2-18 00:02
这个程序好复杂哟;下面这是啥意思,没看明白: struct Date 是个啥东西?(视频我看到40集了)
struct Da ...

这个不是小甲鱼的  
http://mp.weixin.qq.com/s?__biz=MzA3NTIzNjEyNg==&mid=200208793&idx=1&sn=cc68c4c215fd8b0258ed385ac8af10cf#rd  你看一些就明白了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 18:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表