永发信息网

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

答案:7  悬赏:50  手机版
解决时间 2021-02-27 18:27
  • 提问者网友:niaiwoma
  • 2021-02-27 04:13
为什么用VC++时,生成失败?
最佳答案
  • 五星知识达人网友:掌灯师
  • 2021-02-27 05:29
编译器加载失败
以下是可能产生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动态库,该程序可以运行
版本:使用
调试版本正式发布:使用调试阶段
全部回答
  • 1楼网友:持酒劝斜阳
  • 2021-02-27 10:05
因为编译出错,或者链接出错。
  • 2楼网友:罪歌
  • 2021-02-27 09:37
你建立了什么工程??应该建立console工程。
  • 3楼网友:上分大魔王
  • 2021-02-27 09:01
该代码可以根据一个排除如下推论:

以下是可能产生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动态库,该程序可以运行
版本:使用
调试版本正式发布:使用调试阶段
  • 4楼网友:由着我着迷
  • 2021-02-27 07:52
你建错工程类型了..应该建立win32 console。。。而不是win32窗口应用程序。。
两种程序的入口不同的。。
  • 5楼网友:雾月
  • 2021-02-27 06:17
该代码可以根据一个排除如下推论:

以下是可能产生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动态库,该程序可以运行
版本:使用
调试版本正式发布:使用调试阶段
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯