您的位置:首页 > 其它

vs---错误收集并自己解决后归纳

2015-12-03 14:52 633 查看
1。C++编译时,出现这样的错误

d:\program files\microsoft visual studio\vc98\include\stdio.h(36) : error C2143: syntax error : missing ';' before 'string'
d:\program files\microsoft visual studio\vc98\include\stdio.h(36) : fatal error C1004: unexpected end of file found

一般是c++在定义头文件是,少掉了;比如类的定义时,

class temp {

private :

public : 这两部分

} ; ----这个;分号少掉了,便会出现这样的结果。

3. error C2065: '_beginthread' : undeclared identifier

VC多线程编程时,在include process.h的情况下,还会出error C2065: '_beginthread' : undeclared identifier

这样的error信息。主要是配置文件的问题。

Project -> Settings... 中
选C/C++ 的页,然后在Category中选Code Generation
然在它下面的Use run-time libaray 中选Multithreaded(或 Multithreader DLL
或 Debug Multithreader DLL 或 Debug Multithreader )

保存settings,再 build 一次就ok了.

4. rror C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

http://jingyan.baidu.com/article/ce436649fd61543773afd32e.html

5. 出现这种错误提示时:

Severity Code Description Project File Line

Error error LNK2019: unresolved external symbol "public: __thiscall CSendMail::CSendMail(void)" (??0CSendMail@@QAE@XZ) referenced in function "public: void __thiscall CE_MailMFCDlg::TestSendMail(void)" (?TestSendMail@CE_MailMFCDlg@@QAEXXZ) E_MailMFC E_MailMFCDlg.obj

-------没有定义声明的类! 解决办法,定义那些函数

后缀数组: 模板

/*
titie: hdu 3518
author: Gxjun
*/

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

const int MAXN = 20010 ;
int t1[MAXN],t2[MAXN],c[MAXN] ;

bool cmp(int *ra , int a , int b , int lr){

return ra[a] == ra[b] && ra[a+1] == ra[b+1];
}

void swap(char *x , char *y){

if(*x == *y) return ;
*x^=*y,*y^=*x,*x^=*y;
}

// das算法

void da(int str [] , int sa[] , int rank[] , int height[] , int n , int m)
{
n++;
//基数排序
int i,j,p, *x=t1 , *y =t2 ;
for(i=0 ; i<m ; i++ ) c[i]=0;
for(i=0 ; i<n ; i++ ) c[x[i]=str[i]]++;
for(i=1 ; i<m ; i++ ) c[i] += c[i-1];
for(i=n-1 ; i>=0 ; i--) sa[--c[x[i]]]=i;
for(j=1 ; j<=n ; j++){
p=0 ;
for(i=n-j ; i<n ; i++ ) y[p++]=i ;
for(i =0  ; i<n ; i++ )
if(sa[i]>= j) y[p++] = sa[i] -j ;

for(i=0; i<m ;i++)  c[i]=0;
for(i=0; i<n ;i++)  c[x[y[i]]]++;
for(i=1; i<m ;i++)  c[i] += c[i-1];

for(i = n-1 ; i>=0 ; i--)
sa[--c[x[y[i]]]] = y[i] ;

while(i<strlen(x)||i<strlen(y))
swap(x[i],y[i]);
p=1;
x[sa[0]]=0;
for(i=1 ; i<n ;i++)
x[sa[i]] = cmp(y, sa[i-1],sa[i],j)?p-1:p++;
if(p >= n) break;
m = p;
}
int k = 0;
n-- ;
for(i=0 ; i<= n ; i++)
rank[sa[i]]=i;
for(i=0 ; i<n ;i++)
{
if(k) k-- ;
j = sa[rank[i] - 1] ;
while(str[i+k] == str[j+ k])
k++;
height[rank[i]]=k;
}

return ;
}

int rank[MAXN] , height[MAXN] ;

int RMQ[MAXN];
int mm[MAXN];
int best[20][MAXN];

void init(int n){

mm[0]=1;
for(int i=1 ; i<=n ; i++)
mm[i] = ((i&(i-1))==0)?mm[i-1]+1:mm[i-1];
for(int i=1; i<=n ;i++) best[0][i]=i;
for(int i=1 ; i<=mm
; i++)
for(int j=1 ; j+(1<<i) -1<=n ;j++){
int a = best[i-1][j];
int b = best[i-1][j+(1<<(i-1))];
if(RMQ[a] <RMQ[b] ) best[i][j] =a;
else best[i][j]=b;
}
}

int askRMQ(int a , int b){

int t;
t =mm[b-a+1];
b-=best[t][a];
a = best[t][a];
b = best[t][b];
}
int main(int argc , char * argv [] ){

return 0;
}


View Code
6, 出现这种提示:rc(108): error RC2108: expected numerical dialog constant

一般是Control 部分少了内容,加上"static",SS_BITMAP ;

如果后面还更着这样依据,这说明可能是添加了中文或者其他错误字符造成的错误!!

当然还有如果不是control,如果添加了“static”,SS_BITMAP 也回报这样的错误! 所以只需要删掉这样的错误即可!!!!!

7. 检测到"_ITERATOR_DEBUG_LEVEL"的不匹配项

   去检查对应的静态库编译运行库和调用的代码的运行库设置的规格是否一致

多线程调试 (/MTd),MT,MD

8"链接器工具错误 LNK2026 XXX模块对于 SAFESEH 映像是不安全的"(VS2012)

解决方法:

1.打开该项目的“属性页”对话框。

2.单击“链接器”文件夹。

一种方法:

3.单击“命令行”属性页。

4.将 /SAFESEH:NO 键入“附加选项”框中,然后点击应用。

或者去

点击”高级“

找到"映像具有安全异常处理程序" 将其属性改为否 (/SAFESEH:NO)

9 vs将应用软件编译成拥有管理员权限的软件

1找到VS的快捷方式:右击——“打开文件位置”
找到VS的启动项目devenv.exe:右击——属性——兼容性——特权等级,以管理员权限运行;如果需要每个用户都以管理员权限运行,还可以“更改所有用户的设置”——特权等级,以管理员权限运行。
然后在项目的打开方式中确保以VS2010为默认打开程序就好了。

2 属性--连接器--清单文件-》UAC执行级别-》requireAdministrator (/level='requireAdministrator')

10 问题描述:

    MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16

遇到这个问题时,使用将开源码(lib)改编为exe. 这个问题要分两种情况,但是一般步骤是一样的.

1 控制类程序(CONSOLE)出现这种问题

(1) 先右键所在工程->常规->查看”MFC的使用“选项(选择”使用标准windows库“),然后运行,如果还有错误

(2)再右键所在工程->链接器->系统->子系统(选择”控制台 (/SUBSYSTEM:CONSOLE)“)运行即可

(3) 再右键所在工程->c/c++->预处理器->预处理器定义填加”_CONSOLE“删除"_WINDOWS"

2. 对于windows程序

(1) 先右键所在工程->常规->查看”MFC的使用“选项(选择”使用标准MFC库“),然后运行,如果还有错误

(2)再右键所在工程->c/c++->链接器->系统->子系统(选择”窗口 (/SUBSYSTEM:WINDOWS)“)运行即可

(3) 再右键所在工程->c/c++->预处理器->预处理器定义填夹”_WINDOWS“删除"_CONSOLE"

3,还有错误,检查一下自己所建的工程是win32还是console,win32用WMain()作为主函数,console用main作为主函数.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: