调试
文章平均质量分 60
普通网友
这个作者很懒,什么都没留下…
展开
-
error LNK2001的解决
转自:http://hi.baidu.com/felixblog/blog/item/0012cc1c93315e8f87d6b698.html产生原因:在创建MFC项目时(或者#include ),不使用MFC AppWizard向导,如果没有设置好项目参数, 就会在编译时产生很多连接错误,如error LNK2001错误典型的错误提示有: libcmtd.lib(crt0.ob转载 2012-04-23 14:03:12 · 1080 阅读 · 0 评论 -
字段定义语法错误
使用环境:VS2010、Access2007、C#出错场景:在代码中,动态创建一个表:bookInfo使用代码如下:private OleDbCommand m_Cmd;m_Cmd.CommandText = "create table bookInfo (bookID int not null primary key, bookType char(16), bBooked原创 2012-03-20 14:16:36 · 5819 阅读 · 1 评论 -
auto_increment引起的“CREATE TABLE 语句中的语法错误”
使用环境:VS2010、C#、Access2007出错场景:用SQL语句来动态创建一个表,其中想定义一个字段为主键,并且自动增加使用代码如下:private OleDbCommand m_Cmd; m_Cmd.CommandText = "create table bookInfo (bookID int not null auto_increment primary ke原创 2012-03-20 15:40:02 · 15470 阅读 · 0 评论 -
ftok() ENOENT: A component of path does not exist, or path is an empty string.
使用环境:Ubuntu 11.11 c++错误产生:使用ftok()函数来映射一个键值,函数很简单#include #include key_t ftok(const char *pathname, int proj_id);即传递一个路径名,一个辅助数值即可唯一定位一个键值代码如下: //获取对应的键值 key_t key=ftok(SEM_P原创 2012-03-31 13:57:40 · 1189 阅读 · 0 评论 -
Socket.Select()函数使用不当引发的问题(关于套接字在线程间传递是否可行的验证)
使用环境:VS2010 C#做东西的时候碰到一个问题:在后台中,创建了一个监听线程,用来监听是否有连接到监听地址的请求,如果有,则加入监听套接字集中;(这样的话,一个线程就可以接收N个套接字的信息)创建了一个接收线程,对监听套接字集中的套接字进行消息接收,并将该消息显示出来;其中,监听套接字集中有与服务器连接的套接字srvCommSock出错状况:类似下图所示即原创 2012-03-13 14:18:29 · 2289 阅读 · 0 评论 -
expected unqualified-id before string constant
使用环境:Linux / C++错误发现:在代码编写完成之后,编译时发现如下错误:/usr/include/errno.h:32:1: 错误: expected unqualified-id before string constant错误查找:很奇怪的错误,难道系统提供的头文件也会出错?后来发现,在定义完类之后,没有加" ; "在Windows下,此类错误是会原创 2012-03-29 15:39:48 · 16586 阅读 · 5 评论 -
远程主机强迫关闭了一个现有的连接。
使用环境:VS2010 C#出错状况:发送端发送一串字符,显示“成功发送了38字节”;但接收端却在Receive()函数的时候检测到了SocketException,显示“远程主机强迫关闭了一个现有的连接。”代码如下:发送端: try { Socket clientSock = new Sock原创 2012-03-13 13:15:45 · 45731 阅读 · 3 评论 -
结构体编码转换中碰到的问题
使用环境:在网络通信中,使用结构体进行通信结构体定义如下:客户端(采用utf-16编码): [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] struct MsgHead { [MarshalAs(UnmanagedType.ByValArray, SizeCo原创 2012-03-27 12:42:13 · 826 阅读 · 0 评论 -
iconv()函数进行编码转换时的一个注意点
是在做例子的时候发现的,尚不知道原因...iconv()将发送的消息从utf-8转为utf-16时,前面会增加了\377\376而在其他代码间转换时,没有发现类似的问题测试的时候包括了:utf-16->utf-8utf-16->ascIIutf-8->gb2312...原创 2012-03-27 10:34:04 · 673 阅读 · 0 评论 -
只能为对象和函数指定存储类
在C++中,为了提供一些共用的编码转换,特意做了一个静态类。但是在编译的时候无法通过,提示:“ 只能为对象和函数指定存储类 ”在网上查了下,居然没有类似的错误后来百度了下静态类,发现全都是.Net下的后来才想起来,可能C++确实没有提供静态类一说,只是用C#习惯了,所以就直接写了一个静态类出来...原创 2012-03-27 08:41:36 · 1788 阅读 · 0 评论 -
XmlDocument.Save()使用错误导致的文件丢失问题
出错环境:在xml文档中写入一些内容。整个流程是:首先检查xml文件是否在当前路径下,如果存在,则用xmlDocument.Load()进行加载;如果不存在则创建xml文件,并用xmlDocument.Save(string)进行保存出错代码如下: //xml文件名 m_xmlFileName = "fileRecvRecord.x原创 2012-03-07 15:09:16 · 5141 阅读 · 0 评论 -
Access中使用字段bool 引起的 字段定义语法错误。
使用环境:VS2010、Access2007、C#出错场景:在代码中,动态创建一个表:bookInfo使用代码如下:private OleDbCommand m_Cmd;m_Cmd.CommandText = "create table bookInfo (bookID int not null primary key, bookType char(16), bBooked bo原创 2012-03-21 09:51:56 · 2858 阅读 · 0 评论 -
分配空间不足引起的错误:‘Stack smashing detected’
使用环境:ubuntu 11.10、C++出错情景:使用mysql执行一个query语句,以进行一个涉及多个表的联合查询(query语句比较长)代码如下:char query[128]={0};sprintf(query, ".....");...return myList;执行结束之后,返回一个list类型的值#include void func()原创 2012-03-21 09:49:11 · 32309 阅读 · 3 评论 -
关于recv()的一种特殊情况处理(多条消息作为了一条接收)
套接字接收函数如下:recv(int fdsock, void * buf, size_t bufsize, int flags);该函数应该是对方发送一条,接收方接收一条;而且接收方不一定要接收bufsize个字节后才返回;但是在特殊情况下,对方连续发送信息时(用for()循环发送N条信息)时,发现一个状况:第1条消息接收正确,而之后的消息作为一次接收处理了...很是奇怪原创 2012-04-18 23:23:23 · 1627 阅读 · 0 评论 -
关于指针的疑惑
指针具有方便性,可以实现程序的高效执行,但是有一些疑惑。有时候弄明白了,但是总忘,所以记录下来,以备查看。有些不足的地方,以后想起来再进行补充。凡是用到指针的地方,画个图出来!(经验总结)1. 指针之间“=”赋值用“=”赋值时,两个指针指向同一块地址空间。因此,下面的程序执行会提示出错,因为地址空间被释放了,即所谓的野指针。int main(){ char * p原创 2011-08-16 14:51:22 · 724 阅读 · 0 评论 -
返回局部变量的引用可能引起的错误
使用环境:ubuntu 11.10 C++自己创建了一个套接字的类MySock当调用Accept()方法时,返回一个MySock &类型的值;MySock & Accept();出现错误:MySock connSock=lstnSock.Accept();当调用connSock.Recv();方法进行接收时,接收到的字节数为-1(即接收错误);提示错误为:EB原创 2012-04-18 23:19:01 · 1008 阅读 · 0 评论 -
Program received signal SIGPIPE, Broken pipe
转自:http://www.diybl.com/course/3_program/c++/cppjs/20090831/173152.html我写了一个服务器程序, 在Windows下在cygwin环境编译后执行, 然后用C#写了多线程客户端进行压力测试. 程序一直运行正常. 但当在Linux下测试时, 总是莫名退出. 最后跟踪到是write调用导致退出. 用gdb执行程序, 退出时提示"Br转载 2012-04-17 13:37:13 · 7539 阅读 · 0 评论 -
LNK2005错误
参考:http://www.cnblogs.com/cumtb3S/archive/2011/03/12/1982383.htmlhttp://support.microsoft.com/kb/148652编程中经常能遇到LNK2005错误——重复定义错误,其实LNK2005错误并不是一个很难解决的错误。弄清楚它形成的原因,就可以轻松解决它了。 造成LNK2005错误主要有以下几种原创 2012-04-16 13:33:32 · 570 阅读 · 0 评论 -
windows.h与winsock2.h的包含顺序引起的问题
使用环境:Windows、C++错误描述:在项目中用到套接字和线程,对应包含头文件 #include 和#include 但是在编译的时候碰到很多错误,而且几乎都是“ 类型/链接重定义 ”、“ 找不到标识符 ”之类的错误,而且几乎都出现在 winsock2.h和ws2def.h 中;例如:error C2011: “sockaddr_in”:“struct”类型重定义原创 2012-04-25 16:49:21 · 3774 阅读 · 0 评论 -
fatal error C1001: INTERNAL COMPILER ERROR
使用环境:VC6.0 C++出现错误:c:\program files\microsoft visual studio\vc98\include\comutil.h(101) : fatal error C1001: INTERNAL COMPILER ERROR (compiler file 'msc1.cpp', line 1786) Pleas原创 2012-04-24 15:42:28 · 2744 阅读 · 0 评论 -
编译错误:包含了头文件,但提示类未声明(头文件相互包含引起)
使用环境:Ubuntu 11.10 G++错误出现:在编译一个相互包含头文件的代码(A.h中包含B.h,B.h中包含A.h)但是编译出现错误,提示:A.h文件中,B类未声明;B.h文件中,A类未声明错误分析:在头文件中已经用#include 刚开始还以为是名字有错误,一直在检查后来确定没有输入错误时,确定应该是编码的问题之前在头文件相互包含的时候好像也碰到过类似原创 2012-04-12 11:53:42 · 6055 阅读 · 4 评论 -
头文件相互包含的解决
假设我们有两个类A和B,分别定义在各自的头文件A.h和B.h中,但是在A中要用到B,B中也要用到A,即类A和B相互包含的场合对于这种紧密联系的头文件,分开在两个头文件中写会出现各种编译错误,写在一个头文件中比较省事!(我尝试使用#ifndef #define #endif来解决,发现不好使)像下面的写法是错误的://声明B类,否则会编译错误class B; class A原创 2011-11-21 12:23:47 · 688 阅读 · 0 评论 -
COM组件初始化时的错误
使用环境:Windows XP、VC++出现错误:在用ADO组件进行数据库操作时,由于是COM组件,需要初始化COM组件。使用函数:AfxOleInit()在编译时出现如下错误:error C2065: 'AfxOleInit' : undeclared identifier错误分析:看到很多使用AfxOleInit()的场合都是MFC情景下,因此需要包含一些afx原创 2012-04-11 16:00:18 · 4311 阅读 · 0 评论 -
在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式,请确保您的Main函数带有STAThreadAttribute标记。
参考自:http://www.cnblogs.com/winzheng/archive/2008/12/02/1345656.html出错环境:多线程接收文件的时候,需要打开一个SaveFileDialog对象,并调用ShowDialog()方法出错代码:void threadProc(){ ... SaveFileDialog saveFileDlg = n原创 2012-03-06 13:44:51 · 19139 阅读 · 0 评论 -
偏移量和长度超出数组的界限,或者计数大于从索引到源集合结尾处
错误场景:在使用FileStream对象打开一个文件,想读到缓存中。由于缓存大小为1KB,所以需要分次读入。但在使用FIleStream.Read()方法时,错误代码:byte[] sendBuf=new byte[m_nBlockSize];int nRead=readFile.Read(sendBuf, nOffset, m_nBlockSize);当nOffset=1时,总是原创 2012-03-02 16:48:14 · 13298 阅读 · 3 评论 -
Socket.Connected不能在调试时作为套接字是否连接的判断依据
以下内容摘自微软的页面:http://technet.microsoft.com/zh-cn/magazine/system.net.sockets.socket.connected(VS.90).aspx Connected 属性获取截止到最后的 I/O 操作时 Socket 的连接状态。当它返回 false 时,表明 Socket要么从未连接,要么已断开连接。Connected 属原创 2012-02-23 10:12:31 · 6834 阅读 · 0 评论 -
undefined reference to `std::cin'
背景:在Linux下直接man cin/cout 是没有结果的,刚开始以为无法在Linux下使用cin/cout,后来看到网上确实有一些类似的代码,所以做了一个简单的实验,代码如下:#include using namespace std;int main(){ char name[16]={0}; printf("请输入姓名\n"); cin>>name原创 2011-12-09 14:42:57 · 5399 阅读 · 0 评论 -
GCC最基本的用法
在使用GCC编译器的时候,我们必须给出一系列必要的调用参数和文件名称。GCC编译器的调用参数大约有100多个,其中多数参数我们可能根本就用不到,这里只介绍其中最基本、最常用的参数。 下面是man gcc的结果:gcc [-c|-S|-E] [-std=standard] [-g] [-pg] [-Olevel] [-Wwarn...]原创 2011-08-18 08:42:46 · 602 阅读 · 0 评论 -
“warning: the `gets' function is dangerous and should not be used.
在编译到时候碰到如下问题:“warning: the `gets' function is dangerous and should not be used.在另外一个环境下编译到时候是没有问题到,现在搬到另外一个环境下出该问题,可能是环境问题在网上查了下,说是“ Linux 下gcc编译器不支持这个函数,解决办法是使用 fgets”fgets()函数的基本用法为:fget原创 2011-12-07 08:50:57 · 1622 阅读 · 0 评论 -
C# 固定大小结构体的几种测试
如果高手路过,请帮忙解决下想要实现一个具有固定大小的结构体,如下所示: struct Info { public char name[16]; public char cipher[16]; public char signature[256]; }(1) 测试一原创 2011-11-29 09:39:47 · 3858 阅读 · 0 评论 -
undefined reference to error解决方法
Linux下编译,链接程序时,经常会遇到“undefined reference error” 报错,这种错误一般是在找不到相应的库文件的时候产生的。下面是几个常见的问题(原理还不清楚,解释的也不专业,希望能解决一般问题)1. undefined reference to `operator delete(void*)/‘new(void *)’在用gcc进行编译时,有时候会出现这样的原创 2011-08-11 12:42:43 · 34406 阅读 · 0 评论 -
断言错误:ASSERT(ContinueModal())
在MFC中做一个小程序,调试的时候总是出现如下错误:Debug Assertion Failed!原因未知,然后按提示点击“调试”,然后进入代码:ASSERT(ContinueModal());也就是说在这儿产生了断言错误,即程序的某部分不符合对程序的设想,一般是条件不满足或错误而导致这类错误。后来在CSDN(http://topic.csdn.net/t/20060308原创 2011-11-03 14:30:15 · 6121 阅读 · 2 评论 -
调用setsockopt()函数时的WSAEINVAL错误
这个问题是在实现多播实验的时候出现的一个错误,找出错误原因的方法比较笨,之后如果看到有好的方法再做更新检查错误代码如下: //加入多播组 ip_mreq mcast; mcast.imr_interface.S_un.S_addr=INADDR_ANY; mcast.imr_multiaddr.S_un.S_addr=inet_addr("234.5.6.7");int nRet=原创 2011-10-26 12:53:07 · 2268 阅读 · 0 评论 -
Linux连接MySQL时的错误:Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
连接本地的MySQL数据库引擎时候出现的错误。用mysql_error()函数获取到错误提示:Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)为了查看原因,直接在命令行下输入命令查看是否能进入MySQL(MySQL -u usrName -p),仍然提示:Can't co原创 2011-12-02 14:04:42 · 12616 阅读 · 0 评论 -
一个特别的multiple definition错误
环境:ubuntu 11.10,Emacs在BasicMsgSender类中定义了两个静态方法:SendTcpMsg(),SendUdpMsg(),用于一般的发送消息。在其他两个类中,引用了该方法:BasicMsgSender::SendTcpMsg()在链接的时候,提示这两个静态函数被重复定义multiple definition of `BasicMsgSender::sendTc原创 2011-12-02 13:09:54 · 812 阅读 · 0 评论 -
Parsing error
在MFC中对话框对应类中可能会出现错误: Parsing error引起的原因大概可以分为两种:1. 有部分成员变量没有初始化。有构造函数的类型对应变量会由系统自动调用其构造函数进行初始化,但基本类型的成员变量必须注意,尤其是基本类型的数组。2. 与控件无关的成员要放在AFX_DATA_INIT宏外面。宏里面应该对应控件相关成员变量的初始化。出现这两种状况时,对应自动类向导 .原创 2011-07-27 15:12:38 · 6020 阅读 · 0 评论 -
C# 动态创建Access数据库时的错误:“不可识别的数据库格式”
需要用C#动态创建Access数据库,于是有了下文。使用的是Office 2007,数据库文件的格式为.accdb刚开始的时候,以为去检测文件是否存在,如果不存在的话直接创建数据库文件就好了。代码如下:string filePath = new DirectoryInfo(".").FullName + @"\data.accdb"; if (!File.原创 2011-12-08 12:38:02 · 3771 阅读 · 0 评论 -
传递给系统调用的数据区域太小。 (异常来自 HRESULT:0x8007007A)
背景:在C#代码中,需要将一个结构体转为字符数组的形式结构的形式类似于:struct usrInfo{ [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] public char[] name; public int ID;}调用自己的结构体转换函数,将其转为字符数组形式但是提示如下错误:传原创 2011-12-09 10:37:03 · 13049 阅读 · 2 评论 -
关于消息提示框(MessageBox)引起的一个奇怪的错误
原先以为消息提示框(MessageBox)就是弹出一个通知而已,对程序并没有什么影响。结果因为这个观点,程序调了好久...代码如下:case LOGOK:{ this.DialogResult = DialogResult.OK; MessageBox.Show(msgArgs.message); break;}即,在登录成功之后,会弹出一原创 2012-02-22 10:22:13 · 2623 阅读 · 0 评论 -
用指针做传出参数的错误分析
环境:Linux C++问题:memcpy(data, transBuf+nMsgHeadSize, dataLen);调试,查看内存如下:(gdb) print data$19 = 0xb67e237c ""(gdb) print transBuf+nMsgHeadSize$20 = 0x8070460 "xuwei"代码如下:传一个指针参数进去,原创 2011-12-15 16:22:29 · 1263 阅读 · 0 评论