C/C++编译错误笔记

问题场景(一):怎样在vs中引入.dll.lib

方法一:

这里我将要用的.dll和.lib放在一个文件中
在这里插入图片描述

(1)先在资源文件中引入.lib
在这里插入图片描述
(2)在属性配置中将工作目录改为.lib和.dill所在目录下
在这里插入图片描述

方法二:

(1)在项目属性中附加库目录
在这里插入图片描述
(2)在附加依赖项中添加所用的.lib
在这里插入图片描述
(3)再将所有要用到的.dll文件添加到运行目录下

在这里插入图片描述

问题场景(2): 宏重定义

1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\ws2def.h(91): warning C4005: “AF_IPX”: 宏重定义
1> c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(460) : 参见“AF_IPX”的前一个定义
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\ws2def.h(131): warning C4005: “AF_MAX”: 宏重定义
1> c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(479) : 参见“AF_MAX”的前一个定义
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\ws2def.h(168): warning C4005: “SO_DONTLINGER”: 宏重定义
1> c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winsock.h(402) : 参见“SO_DONTLINGER”的前一个定义
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\ws2def.h(212): error C2011: “sockaddr”:“struct”类型重定义

问题原因:

在引入的头文件中windows.h 包含的(winsock.h 与 WinSock2.h包含的(ws2def.h)有重定义的部分。

解决方法:
将winsock2.h写在windows.h前面。
因为windows.h里面有些东西要靠一些宏定义来预编译,否则取默认值,所以这些宏定义要在包含windows.h前面定义,而关于winsock的一些定义包含在winsock2.h里面。
如果先windows 后winsock2 那么windows里面已经按默认定义了一些东西,但又遇到winsock2,有些东西就会冲突,

问题场景(3): 如何让VS 控制台后台运行

在main函数之前加入:

//隐藏 控制台窗口
#pragma comment(linker, "/subsystem:\"windows\"   /entry:\"mainCRTStartup\"")

注意:此方法仅仅适用于vs 2003以上版本,已经经过验证。因为
#pragma comment是vs特有的,而不是c++的标准。

问题场景(4): QSqlQuery::exec: database not open

问题原因:

如果我们仅仅只有一个连接,那么系统默认将QSqlQuery关联到了默认的唯一的数据库连接上了。也正因如此,我们遇上了QSqlQuery::exec: database not open的问题。

解决方法一:

 sql_query=new QSqlQuery(database_);//注意必须在考虑是不是没有建立连接就直接使用QSqlQuery实例了?

问题场景(5): QSqlQuery::prepare: database not open

问题原因:

考虑是不是没有建立连接就直接使用QSqlQuery实例了?
注意:QSqlQuery必须在QSqlDatabase建立连接之后再实例化

解决方法一:

 //判断是否存在这个连接
 if (QSqlDatabase::contains("qt_sql_default_connection"))
    {
    	//设置为默认连接
        database_ = QSqlDatabase::database("qt_sql_default_connection");/
    }
 //强制指定数据库并且必须在QSqlDatabase建立连接之后
    sql_query=new QSqlQuery(database_)

问题场景(6): SQLite插入数据失败

问题原因:

创建的数据表应该和插入数据数据表的参数个数一致。

  QString create_sql = "create table member (id int primary key, name varchar(30))"; //创建数据表
  QString insert_sql = "insert into member values(?,?)";    //插入数据

持续更新中~~~~~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值