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(?,?)";    //插入数据

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Jupyter Notebook 是一个交互式笔记本环境, 通常用于数据分析和编程. 它不能直接运行 C/C++ 程序, 但是可以通过一些技巧来间接实现. 一种方法是使用 Cython 来编译 C/C++ 代码, 然后在 Jupyter Notebook 中调用. 另一种方法是使用 Jupyter 中的 C++ 扩展, 例如 Xeus-cling, 它可以在 Jupyter Notebook 中直接运行 C++ 代码. 如果你想要在 Jupyter Notebook 中编写和运行 C/C++ 代码, 这些方法都是值得尝试的. ### 回答2: Jupyter Notebook是一个非常强大的交互式编程环境,但它本身并不直接支持运行C/C++代码。不过,我们可以借助一些插件和工具来实现在Jupyter Notebook中运行C/C++代码的目标。 一种方法是使用插件xeus-cling。这是一个基于Jupyter的C++ REPL(Read-Eval-Print Loop)内核,可以让我们在Jupyter Notebook中即时运行和调试C++代码。我们需要先安装xeus-cling内核,然后启动Jupyter Notebook,并选择C++内核开始编程。 另一种方法是通过IPython的魔术命令来运行C/C++代码。首先,我们需要安装GCC或者Clang编译器。然后,使用IPython的编译器魔术命令`%%cpp`来指定要编译和运行的C/C++代码块。例如,我们可以在一个代码块中使用`%%cpp`魔术命令来编写和运行C代码。 请注意,这种方法下,Jupyter Notebook并不真正支持C/C++语言,而是使用魔术命令将代码块交给编译器来执行,因此在Jupyter Notebook中无法使用C/C++的标准输入输出。 综上所述,我们可以通过安装插件xeus-cling或使用IPython的魔术命令来在Jupyter Notebook中运行C/C++代码。 ### 回答3: 要在Jupyter Notebook中运行C/C++代码,可以使用以下方法: 1. 安装GCC/G++编译器:Jupyter Notebook不直接支持C/C++语言,所以首先需要安装GCC/G++编译器。在Linux系统中,可以通过运行`sudo apt-get install build-essential`命令来安装。在Windows系统中,可以下载MinGW或者Cygwin等编译工具链来安装GCC/G++编译器。 2. 安装Ipykernel内核:为了在Jupyter Notebook中运行C/C++代码,需要添加Ipykernel内核。可以通过运行以下命令来安装:`pip install ipykernel`。 3. 创建一个C/C++内核:执行以下命令来创建一个新的内核: ``` python -m ipykernel install --user --name ckernel --display-name "C/C++" ``` 其中,`ckernel`是内核的名称,`C/C++`是在Jupyter Notebook中显示的内核名称。 4. 在Jupyter Notebook中运行C/C++代码:打开Jupyter Notebook,并选择使用C/C++内核的笔记本。然后,在代码单元格中输入C/C++代码,并按`Shift + Enter`运行。 需要注意的是,Jupyter Notebook中的C/C++代码是通过编译器进行编译和执行的,所以在执行之前需要正确编写C/C++代码,并处理任何编译错误或警告。此外,Jupyter Notebook中的C/C++代码只能在一个单元格中编写和执行,无法像Python代码一样进行分割和交互式操作。如果需要交互式操作,可以考虑使用其他支持C/C++的集成开发环境(IDE)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值