当前位置:首页 » 编程软件 » vc编译错误46什么原因

vc编译错误46什么原因

发布时间: 2022-07-13 02:45:24

1. vc++编译错误什么意思

第一错误是:
找不到 _DrawDibRealize(它后面出现的@12是编译器给它加上的,根据函数调用约定不同有所不同,有Pascal和C调用约定两种)符号的定义,它是在连接的时候出现的,有两种可能:1、你写的这个函数只有省名,没有定义,2、这个函数是动态连接库导出的函数,而你没有连接它的lib库文件可以用“#pragma comment(lib, "那个库.lib")”编译命令或设置VC的lib文件路径。

第二个是个警告,与你设置编译器选项有关这里你可以不用管它。如果你想去掉这个警告可以用在你工程的适当位置加上#pragma warning( disable : 4652)编译命令。

2. vc6.0编译时出现错误,这是什么问题

打开任务管理器看看是不是有一个first.exe正在运行
有就结束它再编译

3. 在vc6.0上编译错误,怎么回事啊

这里void fn(Student& s){ cout<<"ok\n"; } student改为string

4. vc++编译老是出错

可能的原因一: 没有在cpp文件中 #include "stdafx.h"
可能的原因二:使用#ifdef后没有对应的#endif

我估计lz应该是第一种可能性。

5. vc程序编译出现错误

第一个问题:这个类型转换警告只会在重新编译的时候出来,连着运行就不会再提示

第二个问题:引起LNK2001的原因很多,你最好能把整个工程发上来,帮你看看。刚才找了一些讲解这个的,也许对你有用。
学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于
编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时,
编译都已通过。产生连接错误的原因非常多,尤其LNK2001错误,常常使人不
明其所以然。如果不深入地学习和理解VC++,要想改正连接错误LNK2001非
常困难。
初学者在学习VC++的过程中,遇到的LNK2001错误的错误消息主要为:
unresolved external symbol “symbol”(不确定的外部“符号”)。
如果连接程序不能在所有的库和目标文件内找到所引用的函数、变量或
标签,将产生此错误消息。一般来说,发生错误的原因有两个:一是所引用
的函数、变量不存在、拼写不正确或者使用错误;其次可能使用了不同版本
的连接库。
以下是可能产生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
时将得到“unresolved external on _WinMain@16”的LNK2001错误信息。
3.使用/MD选项编译时,既然所有的运行库都被保留在动态链接库之内,
源文件中对“func”的引用,在目标文件里即对“__imp__func” 的引用。
如果试图使用静态库LIBC.LIB或LIBCMT.LIB进行连接,将在__imp__func上发
生LNK2001;如果不使用/MD选项编译,在使用MSVCxx.LIB连接时也会发生LNK2001。
4.使用/ML选项编译时,如用LIBCMT.LIB链接会在_errno上发生LNK2001。
5.当编译调试版的应用程序时,如果采用发行版模态库进行连接也会产
生LNK2001;同样,使用调试版模态库连接发行版应用程序时也会产生相同的
问题。
6.不同版本的库和编译器的混合使用也能产生问题,因为新版的库里可
能包含早先的版本没有的符号和说明。
7.在不同的模块使用内联和非内联的编译选项能够导致LNK2001。如果
创建C++库时打开了函数内联(/Ob1或/Ob2),但是在描述该函数的相应头
文件里却关闭了函数内联(没有inline关键字),这时将得到该错误信息。
为避免该问题的发生,应该在相应的头文件中用inline关键字标志内联函数。
8.不正确的/SUBSYSTEM或/ENTRY设置也能导致LNK2001。
其实,产生LNK2001的原因还有很多,以上的原因只是一部分而已,对初
学者来说这些就够理解一阵子了。但是,分析错误原因的目的是为了避免错
误的发生。LNK2001错误虽然比较困难,但是只要注意到了上述问题,还是能
够避免和予以解决的。

6. VC编译错误

这个错误是编译帮助文件时, 缺少部分帮助文件资源时引发的。
解决办法是不编译帮助文件,只编译源代码,方法如下:
找到your_prj.dsp, 用记事本打开,其中your_prj是你的工程名字,请灵活替换:
1.找到SOURCE=.\hlp\your_prj.hpj,
从此开始删除,直到
# End Source File
# Begin Source File
2.找到SOURCE=.\Resource.h
从此开始删除,直到
# End Source File
# Begin Source File
3.找到SOURCE=.\hlp\your_prj.cnt
从此开始删除,直到
# End Source File
# Begin Source File

7. vc6.0 程序编译出现错误 怎么回事

#include <stdio.h>
#define M 5
#define N 5

int main(void)
{

int a[M][N];
int b[M][N];
int c[M][N];
int i,j,m,n,t,k,p;

printf("Please enter the number m & n:");
scanf("%d %d",&m,&n);

printf("Please enter the first Array:");
for ( i = 0;i < m;i++)
{
for (j =0;j < n;j ++)
{
scanf("%d",&a[i][j]);
}
}

printf("Please enter the second Array:");
for (i = 0;i < m;i ++)
{
for (j = 0;j < n;j ++)
{
scanf("%d",&b[i][j]);
}
}

printf("Please enter the third Array:");
for (i = 0;i < m;i ++)
{
for (j = 0;j < n;j ++)
{
scanf("%d",&c[i][j]);
}
}

printf("Please enter the number k & p:");
scanf("%d %d",&k,&p);

switch(p)
{
case 1:
for (i = 0;i < m;i ++)
{
for (j = 0;j <n;j ++)
{

printf("%d",k*a[i][j]);

}

printf("\n");

}
break; //矩阵的数乘

case 2:
for (i = 0;i < m;i++)
{
for (j = 0;j <n;j++)
{
printf("%d",b[j][i]);
}
printf("\n");
}
break; // 这个程序不对

case 3:
for (i = 0;i < m;i ++)
{
for (j = 0;j < n;j++)
{
printf("%d",b[i][j] + c[i][j]);
}
printf("\n");
}
break; //矩阵的加法

case 4:
for (i = 0;i < m;i ++)
{
for (j = 0;j < n;j ++)
{
printf("%d",b[i][j] - c[i][j]);
}
printf("\n");
}
break; //矩阵的减法

case 5:
for (i = 0;i < m;i ++)
{
for (j = 0;j <n;j++)
{
printf("%d",b[i][j] * c[i][j]);
}
printf("\n");
}
break; //矩阵的乘法

default:
printf("Input error!\n");
}

}
你的二维数组定义和表示错了,应该是array[][]。还有数组的下标是从0开始的,比如一个二维数组a[3][3]它的元素个数为9个分别为a[0][0],a[0][1],a[0][2],a[1][0],a[1][1],a[1][2],a[2][0],a[2][1],a[2][2]。你在输入和输出时用了<=就错了,要用<。

8. 编译c++程序时 不加头文件 windows.h出现三个错误WinAPI.cpp F:\vc++\program46\WinAPI.cpp(3) : error C2

估计你抄代码时某些英文写错了, 我以前在写windows 窗口时常出现的。

9. vc6.0编译错误

说win7不支持VC6.0的是SB。
具体的,你可以上网搜索错误代码,不管是什么错误,错误代码疏导网络的搜索栏里,什么问题都可以解决。这个是我抄过来的,不好意思。
当VC++出现Compiling... Error spawning cl.exe 错误的解决办法有如下几种,请楼主尝试:

方法1:
启动VC时不要用图形界面,通过在命令提示符下输入:Msdev /useenv运行(注意啦/前面有个空格).它会强制使系统环境变量全高设置成正确值.而且,只需要使用一次这样的方式运行VC,以后再次通过双击图标的方式启动也不会有问题。

方法2:
使用你的VC安装盘修复一下。

方法3:
在VC中点击“Tools”—>“Option”—>“Directories”,发现路径有误,重新设置“Excutable Fils,Include Files,Library Files,Source Files”的路径。

要是显示“找不到mspdb60.dll”,去能正常运行VC++的电脑中搜索mspdb60.dll文件,拷贝到你的机器上Microsoft Visual Studio\Common\MSDev98\Bin下。缺失其他文件类似操作O(∩_∩)O。

方法4:
可能很多人在安装VC 6.0后有过点击“Compile”或者“Build”后被出现的
“Compiling... ,Error spawning cl.exe”错误提示给郁闷过。很多人的
选择是重装,实际上这个问题很多情况下是由于路径设置的问题引起的,
“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\VC98\Bin”下面,
你可以到相应的路径下找到这个应用程序。

因此问题可以按照以下方法解决:打开vc界面 点击VC“TOOLS(工具)”—>“Option(选择)”
—>“Directories(目录)”重新设置“Excutable Fils、Include Files、
Library Files、Source Files”的路径。很多情况可能就一个盘符的不同
(例如你的VC装在C,但是这些路径全部在D),改过来就OK了。

如果你是按照初始路径安装vc6.0的,路径应为:
executatble files:
C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin
C:\Program Files\Microsoft Visual Studio\VC98\BIN
C:\Program Files\Microsoft Visual Studio\Common\TOOLS
C:\Program Files\Microsoft Visual Studio\Common\TOOLS\WINNT

include files:
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE

library files:
C:\Program Files\Microsoft Visual Studio\VC98\LIB
C:\Program Files\Microsoft Visual Studio\VC98\MFC\LIB

source files:
C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC
C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC

如果你装在其他盘里,则仿照其路径变通就行。
关键是microsoft visual studio\ 后面的东西要相同。
是在是不行就重装。
vc 6.0里可以做C语言编程,但是不要使用clrscr()和getch()函数。不然会报错的,同时把头文件必须加上。

10. VC编译错误,到底是什么问题

First-chance
exception
in
XX.exe(KERNEL32.DLL):0xE06D7363:Microsoft
C++
Exception

在VC中调试程序时,Output窗口有时会出现“First-chance
exception
in
xxx.exe...”这样的信息。一般来说,这是由于程序中发生了异常,被VC捕获而产生的输出。有时在程序运行时并没出错,但是在调试时总是停到此处从而无法调试下面程序。 First-chance
exception
in
xxx.exe
(KERNEL32.DLL):
0xE06D7363:
Microsoft
C++
Exception”。Windows
操作系统中广泛使用了结构化异常(SEH)来处理特殊情况,许多和底层打交道的API都靠SEH来处理可能发生的意外。并且,这些API中都有捕获SEH的代码,产生的异常不会对程序造成影响。但是由于上面提到的“First-chance
exception,Second-chance
exception”机制,VC仍然会有输出,但是我们完全可以忽略。如果你实在不喜欢这些输出信息,那你就必须禁用对特定异常的“First-chance
exception”捕获。

热点内容
硬件哪个配置性价比高 发布:2025-02-08 14:47:07 浏览:142
如何去掉仅限自动配置 发布:2025-02-08 14:37:55 浏览:704
压缩空气有啥 发布:2025-02-08 14:26:01 浏览:703
python输入一个数 发布:2025-02-08 14:26:00 浏览:449
普惠e卡最初密码是多少 发布:2025-02-08 14:21:57 浏览:475
亚索后q脚本 发布:2025-02-08 14:21:06 浏览:324
官方源码 发布:2025-02-08 14:09:25 浏览:437
python过滤器 发布:2025-02-08 14:05:06 浏览:617
火山币算法 发布:2025-02-08 14:04:49 浏览:669
jffs2解压 发布:2025-02-08 13:55:15 浏览:388