永发信息网

为什么用VC++时,生成失败?

答案:7  悬赏:50  手机版
解决时间 2021-02-27 18:27
为什么用VC++时,生成失败?
最佳答案
编译器加载失败
以下是可能产生LNK2001错误的原因:
一。由于编码错误导致LNK2001。
1。该代码不匹配的程序或模块定义(。DEF)文件能导致LNK2001。例如,
在C + +源文件中声明了一个变量“VAR1”,而是试图
“VAR1”访问该变量在另一个文件中的变量,会发生错误。
2。如果您使用的是内联函数中定义的文件。 CPP,而不是在头文件中默认
大义LNK2001错误。
3。调用函数的参数类型与函数声明的类型不匹配
会产生LNK2001。
4。试图从基类的构造函数或析构函数中调用虚函数会导致LNK2001。
5。注意函数和变量的效用,只有全局变量,函数是可以在公共场合。
静态函数和静态变量具有相同的使用限制。当试图访问外部文件
没有在文件中声明的静态变量会导致一个编译错误LNK2001。
函数声明的变量(局部变量)只能被使用的功能的范围内。
C + +的全局常量只有静态连接。这不同于C,如果您尝试使用全局变量在C + +
多个文件,将会产生LNK2001错误。一种解决方法是在
头文件中需要加入一定的初始化代码。 CPP文件中包含的头文件;另一个
方法是使用变量赋值一个常数。
二。引起设置的编译和链接LNK2001
1。如果编译时使用/ NOD(/ NODEFAULTLIB)选项,运行
由编译器连接的程序库和MFC库写入到目标文件模块,但除非明确地包含在文件中
库名,否则这些库不会被链接到项目文件中。在这种情况下,使用/ NOD将引导
引起的错误LNK2001。
2。如果没有入口wWinMainCRTStartup安装过程中,使用Unicode和MFC
“无法解析的外部_WinMain @ 16”错误LNK2001信息的。
3。使用/ MD选项编译,因为所有的运行时将被保留在动态链接库中的,
源文件“功能”参考引用该的“__imp__func”目标文件的。
如果您尝试连接到使用静态库LIBC.LIB或LIBCMT.LIB在__ imp__func的头发
生LNK2001;如果你不使用/ MD选项编译,在使用MSVCxx.LIB连接将发生LNK2001 。
4。 / ML的选项编译LIBCMT.LIB链接的_errno的发生LNK2001。
5。当编译调试版本的应用程序,如果你连接使用国家图书馆发布Banmo酒店也产生
生LNK2001;同样,使用调试Banmo酒店国家图书馆也将有相同的连接发布的应用程序
问题。
6。不同版本的库和编译器的混合使用会带来一些问题,因为新版本的库可以
更早的版本不包含符号和说明。
7。在不同的模块中使用内联和非内联的编译选项可能会导致LNK2001。
创建一个C + +库中的open函数内联(/ Ob1进行,或/ Ob2),但描述的功能,相应的头
文件实际上是关闭了函数内联(没有inline关键字),当你将得到的错误信息。
为了避免问题的??发生,应该在适当的头文件内联函数inline关键字标志。
8。不正确的/ SUBSYSTEM或/ ENTRY设置可能会导致LNK2001。
创建一个MFC项目,不使用MFC AppWizard向导,如果你没有设置好项目的参数,会产生很多连接错误,在编译时的错误LNK2001错误,典型的错误:
libcmtd的。 LIB(crt0.obj):错误LNK2001:无法解析的外部符号_main
LIBCD.lib(wincrt0.obj)的错误LNK2001:无法解析的外部符号_WinMain @ 16
MSVCRTD.LIB(crtexew.obj):错误LNK2001:无法解析的外部符号_WinMain @ 16
NAFXCWD.LIB(thrdcore.obj):错误LNK2001:无法解析的外部符号__ beginthreadex
NAFXCWD.LIB(thrdcore.obj),:错误LNK2001:无法解析的外部符号__ endthreadex
这里解决:
1 Windows子系统设置错误,提示:
libcmtd.lib(crt0.obj):错误LNK2001:无法解析的外部符号_main
Windows项目中使用Windows子系统,而不是控制台可以设置:
[工程] - > [设置] - >选择“链接”属性页,
项目选项中将/ /子系统子系统:改变的窗口 console控制台子系统设置错误,提示:
LIBCD.lib(wincrt0.obj)的错误LNK2001:无法解析的外部符号_WinMain _at_ 16
控制台项目的控制台子系统,而不是Windows,设置: BR /> [工程] - > [设置] - >选择“链接”属性页,
在Project Options中将/ SUBSYSTEM:WINDOWS更改/子系统??:控制台
3程序入口设置错误,提示:
MSVCRTD.LIB的(crtexew.obj):错误LNK2001:无法解析的外部符号_WinMain _at_ 16
通常,MFC项目的程序入口函数WinMain中,Unicode版本的编译器项目,程序入口必须改为wWinMainCRTStartup,所以需要重新设置程序入口:
[工程] - > [设置] - >选择“C / C + +”属性页,
在“类别中选择”输出“ BR />,然后填写在入口点符号wWinMainCRTStartup
线程运行时库设置不正确,提示:
NAFXCWD.LIB(thrdcore.obj):错误LNK2001:无法解析的外部符号__ beginthreadex /> NAFXCWD.LIB(thrdcore.obj):错误LNK2001:无法解析的外部符号__ endthreadex
这是因为MFC的多线程库,您需要更改设置:
[工程] - > [设定] - >选择“C / C + +属性页,
中选择类别代码生成,
然后选择”使用运行时库的调试多线程或者多线程

单螺纹单线程静态链接库(发布版)
多线程的多线程静态链接库(发布版)
多线程的多线程动态链接库DLL(发布版)
调试单线程单线程静态链接库(调试版本)
调试多线程多线程静态链接库(调试多线程动态链接库(调试版本)
单线程的版本)
调试多线程DLL:需要多线程调用多的
多线程的DOS环境:同时可以运行
静态库库直接可以运行的程序链接的MFC库
动态库:需要相应的DLL动态库,该程序可以运行
版本:使用
调试版本正式发布:使用调试阶段
全部回答
因为编译出错,或者链接出错。
你建立了什么工程??应该建立console工程。
该代码可以根据一个排除如下推论:

以下是可能产生LNK2001错误的原因:
一。由于编码错误导致LNK2001。
1。该代码不匹配的程序或模块定义(。DEF)文件能导致LNK2001。例如,
在C + +源文件中声明了一个变量“VAR1”,而是试图
“VAR1”访问该变量在另一个文件中的变量,会发生错误。
2。如果您使用的是内联函数中定义的文件。 CPP,而不是在头文件中默认
大义LNK2001错误。
3。调用函数的参数类型与函数声明的类型不匹配
会产生LNK2001。
4。试图从基类的构造函数或析构函数中调用虚函数会导致LNK2001。
5。注意函数和变量的效用,只有全局变量,函数是可以在公共场合。
静态函数和静态变量具有相同的使用限制。当试图访问外部文件
没有在文件中声明的静态变量会导致一个编译错误LNK2001。
函数声明的变量(局部变量)只能被使用的功能的范围内。
C + +的全局常量只有静态连接。这不同于C,如果您尝试使用全局变量在C + +
多个文件,将会产生LNK2001错误。一种解决方法是在
头文件中需要加入一定的初始化代码。 CPP文件中包含的头文件;另一个
方法是使用变量赋值一个常数。
二。引起设置的编译和链接LNK2001
1。如果编译时使用/ NOD(/ NODEFAULTLIB)选项,运行
由编译器连接的程序库和MFC库写入到目标文件模块,但除非明确地包含在文件中
库名,否则这些库不会被链接到项目文件中。在这种情况下,使用/ NOD将引导
引起的错误LNK2001。
2。如果没有入口wWinMainCRTStartup安装过程中,使用Unicode和MFC
“无法解析的外部_WinMain @ 16”错误LNK2001信息的。
3。使用/ MD选项编译,因为所有的运行时将被保留在动态链接库中的,
源文件“功能”参考引用该的“__imp__func”目标文件的。
如果您尝试连接到使用静态库LIBC.LIB或LIBCMT.LIB在__ imp__func的头发
生LNK2001;如果你不使用/ MD选项编译,在使用MSVCxx.LIB连接将发生LNK2001 。
4。 / ML的选项编译LIBCMT.LIB链接的_errno的发生LNK2001。
5。当编译调试版本的应用程序,如果你连接使用国家图书馆发布Banmo酒店也产生
生LNK2001;同样,使用调试Banmo酒店国家图书馆也将有相同的连接发布的应用程序
问题。
6。不同版本的库和编译器的混合使用会带来一些问题,因为新版本的库可以
更早的版本不包含符号和说明。
7。在不同的模块中使用内联和非内联的编译选项可能会导致LNK2001。
创建一个C + +库中的open函数内联(/ Ob1进行,或/ Ob2),但描述的功能,相应的头
文件实际上是关闭了函数内联(没有inline关键字),当你将得到的错误信息。
为了避免问题的??发生,应该在适当的头文件内联函数inline关键字标志。
8。不正确的/ SUBSYSTEM或/ ENTRY设置可能会导致LNK2001。
创建一个MFC项目,不使用MFC AppWizard向导,如果你没有设置好项目的参数,会产生很多连接错误,在编译时的错误LNK2001错误,典型的错误:
libcmtd的。 LIB(crt0.obj):错误LNK2001:无法解析的外部符号_main
LIBCD.lib(wincrt0.obj)的错误LNK2001:无法解析的外部符号_WinMain @ 16
MSVCRTD.LIB(crtexew.obj):错误LNK2001:无法解析的外部符号_WinMain @ 16
NAFXCWD.LIB(thrdcore.obj):错误LNK2001:无法解析的外部符号__ beginthreadex
NAFXCWD.LIB(thrdcore.obj),:错误LNK2001:无法解析的外部符号__ endthreadex
这里解决:
1 Windows子系统设置错误,提示:
libcmtd.lib(crt0.obj):错误LNK2001:无法解析的外部符号_main
Windows项目中使用Windows子系统,而不是控制台可以设置:
[工程] - > [设置] - >选择“链接”属性页,
项目选项中将/ /子系统子系统:改变的窗口 console控制台子系统设置错误,提示:
LIBCD.lib(wincrt0.obj)的错误LNK2001:无法解析的外部符号_WinMain _at_ 16
控制台项目的控制台子系统,而不是Windows,设置: BR /> [工程] - > [设置] - >选择“链接”属性页,
在Project Options中将/ SUBSYSTEM:WINDOWS更改/子系统??:控制台
3程序入口设置错误,提示:
MSVCRTD.LIB的(crtexew.obj):错误LNK2001:无法解析的外部符号_WinMain _at_ 16
通常,MFC项目的程序入口函数WinMain中,Unicode版本的编译器项目,程序入口必须改为wWinMainCRTStartup,所以需要重新设置程序入口:
[工程] - > [设置] - >选择“C / C + +”属性页,
在“类别中选择”输出“ BR />,然后填写在入口点符号wWinMainCRTStartup
线程运行时库设置不正确,提示:
NAFXCWD.LIB(thrdcore.obj):错误LNK2001:无法解析的外部符号__ beginthreadex /> NAFXCWD.LIB(thrdcore.obj):错误LNK2001:无法解析的外部符号__ endthreadex
这是因为MFC的多线程库,您需要更改设置:
[工程] - > [设定] - >选择“C / C + +属性页,
中选择类别代码生成,
然后选择”使用运行时库的调试多线程或者多线程

单螺纹单线程静态链接库(发布版)
多线程的多线程静态链接库(发布版)
多线程的多线程动态链接库DLL(发布版)
调试单线程单线程静态链接库(调试版本)
调试多线程多线程静态链接库(调试多线程动态链接库(调试版本)
单线程的版本)
调试多线程DLL:需要多线程调用多的
多线程的DOS环境:同时可以运行
静态库库直接可以运行的程序链接的MFC库
动态库:需要相应的DLL动态库,该程序可以运行
版本:使用
调试版本正式发布:使用调试阶段
你建错工程类型了..应该建立win32 console。。。而不是win32窗口应用程序。。
两种程序的入口不同的。。
该代码可以根据一个排除如下推论:

以下是可能产生LNK2001错误的原因:
一。由于编码错误导致LNK2001。
1。该代码不匹配的程序或模块定义(。DEF)文件能导致LNK2001。例如,
在C + +源文件中声明了一个变量“VAR1”,而是试图
“VAR1”访问该变量在另一个文件中的变量,会发生错误。
2。如果您使用的是内联函数中定义的文件。 CPP,而不是在头文件中默认
大义LNK2001错误。
3。类型不匹配时被调用的函数的参数类型的函数声明
会产生LNK2001。
4。试图从基类的构造函数或析构函数中调用虚函数会导致LNK2001。
5。注意函数和变量的效用,只有全局变量,函数是可以在公共场合。
静态函数和静态变量具有相同的使用限制。当试图访问外部文件
没有在文件中声明的静态变量会导致一个编译错误LNK2001。
函数声明的变量(局部变量)只能被使用的功能的范围内。
C + +的全局常量只有静态连接。这不同于C,如果您尝试使用全局变量在C + +
多个文件,将会产生LNK2001错误。一种解决方法是在
头文件中需要加入一定的初始化代码。 CPP文件中包含的头文件;另一个
方法是使用变量赋值一个常数。
二。引起设置的编译和链接LNK2001
1。如果编译时使用/ NOD(/ NODEFAULTLIB)选项,运行
由编译器连接的程序库和MFC库写入到目标文件模块,但除非明确地包含在文件中
库名,否则这些库不会被链接到项目文件中。在这种情况下,使用/ NOD将引导
引起的错误LNK2001。
2。如果没有入口wWinMainCRTStartup安装过程中,使用Unicode和MFC
“无法解析的外部_WinMain @ 16”错误LNK2001信息的。
3。使用/ MD选项编译,因为所有的运行时将被保留在动态链接库中的,
源文件“功能”参考引用该的“__imp__func”目标文件的。
如果您尝试连接到使用静态库LIBC.LIB或LIBCMT.LIB在__ imp__func的头发
生LNK2001;如果你不使用/ MD选项编译,在使用MSVCxx.LIB连接将发生LNK2001 。
4。 / ML的选项编译LIBCMT.LIB链接的_errno的发生LNK2001。
5。当编译调试版本的应用程序,如果你连接使用国家图书馆发布Banmo酒店也产生
生LNK2001;同样,使用调试Banmo酒店国家图书馆也将有相同的连接发布的应用程序
问题。
6。不同版本的库和编译器的混合使用会带来一些问题,因为新版本的库可以
更早的版本不包含符号和说明。
7。在不同的模块中使用内联和非内联的编译选项可能会导致LNK2001。
创建一个C + +库中的open函数内联(/ Ob1进行,或/ Ob2),但描述的功能,相应的头
文件实际上是关闭了函数内联(没有inline关键字),当你将得到的错误信息。
为了避免问题的??发生,应该在适当的头文件内联函数inline关键字标志。
8。不正确的/ SUBSYSTEM或/ ENTRY设置可能会导致LNK2001。
创建一个MFC项目,不使用MFC AppWizard向导,如果你没有设置好项目的参数,会产生很多连接错误,在编译时的错误LNK2001错误,典型的错误:
libcmtd的。 LIB(crt0.obj):错误LNK2001:无法解析的外部符号_main
LIBCD.lib(wincrt0.obj)的错误LNK2001:无法解析的外部符号_WinMain @ 16
MSVCRTD.LIB(crtexew.obj):错误LNK2001:无法解析的外部符号_WinMain @ 16
NAFXCWD.LIB(thrdcore.obj):错误LNK2001:无法解析的外部符号__ beginthreadex
NAFXCWD.LIB(thrdcore.obj),:错误LNK2001:无法解析的外部符号__ endthreadex
这里解决:
1 Windows子系统设置错误,提示:
libcmtd.lib(crt0.obj):错误LNK2001:无法解析的外部符号_main
Windows项目中使用Windows子系统,而不是控制台可以设置:
[工程] - > [设置] - >选择“链接”属性页,
项目选项中将/ /子系统子系统:改变的窗口 console控制台子系统设置错误,提示:
LIBCD.lib(wincrt0.obj)的错误LNK2001:无法解析的外部符号_WinMain _at_ 16
控制台项目的控制台子系统,而不是Windows,设置: BR /> [工程] - > [设置] - >选择“链接”属性页,
在Project Options中将/ SUBSYSTEM:WINDOWS更改/子系统??:控制台
3程序入口设置错误,提示:
MSVCRTD.LIB的(crtexew.obj):错误LNK2001:无法解析的外部符号_WinMain _at_ 16
通常,MFC项目的程序入口函数WinMain中,Unicode版本的编译器项目,程序入口必须改为wWinMainCRTStartup,所以需要重新设置程序入口:
[工程] - > [设置] - >选择“C / C + +”属性页,
在“类别中选择”输出“ BR />,然后填写在入口点符号wWinMainCRTStartup
线程运行时库设置不正确,提示:
NAFXCWD.LIB(thrdcore.obj):错误LNK2001:无法解析的外部符号__ beginthreadex /> NAFXCWD.LIB(thrdcore.obj):错误LNK2001:无法解析的外部符号__ endthreadex
这是因为MFC的多线程库,您需要更改设置:
[工程] - > [设置] - >选择“C / C + +属性页,
选择的类别代码生成,
然后选择”使用运行时库的调试多线程或者多线程

单螺纹(发布版)
多线程的多线程静态链接库(发布版)
多线程多线程的DLL动态链接库(发布版)
调试单线程单线程的单线程静态链接库静态链接库(调试版本)
调试多线程多线程静态链接库(调试多线程动态链接库(调试版本)
单线程的版本)
调试多线程DLL:不需要多线程调用多的
多线程的DOS环境:同时可以运行
静态库库直接可以运行的程序链接的MFC库
动态库:需要相应的DLL动态库,该程序可以运行
版本:使用
调试版本正式发布:使用调试阶段
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
想办网络公司,场地问题怎么解决?
目前,活跃在城乡的小型企业、微型企业、城乡
蹈字开头四字成语
已知一个工件尺寸如图(单位:mm),计算L的长(精
河南新华书店取书卡怎么用?急!!!
中国移动自由空间指定专营店在什么地方啊,我
读“某地等高线地形图”,回答问题:(6分)
120分2时大于号小于号
牡丹灵通卡一天最多取多少钱?
玻尿酸安全套有什么作用?
二氧化碳的下列用途只利用了其物理性质的是AC
鸡会吃熟的米饭吗
福田汽车长沙汽车厂在哪里啊,我有事要去这个
飞机托运带硬盒的白酒,会碎吗
平均数怎么求
推荐资讯
钳子哦钳形万用表怎么用
苏州市民卡可以在常州买药吗?
眼眉跳在医学上是怎么解释的?或眼袋跳
k787次列车沿途停车站
CDN技术的负载均衡
【承担费用英文】用英语怎么说“某项费用由你
2019年南通小题课时作业本三年级数学上册江苏
大悲咒歌词意思
公司不买社保可以要求赔偿吗。是什么保险都没
举升机升上去下不来了,是怎么回事,一边下一
大胆、科学的猜想与假设是科学探究的先导和价
服务号和订阅号哪个好
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?