VC

Windows驱动程序框架

天涯浪子 提交于 2021-01-30 11:54:29
在配置好想对应的开发环境后,我们就可以开发驱动程序了。注:下面的主要以NT式驱动为例,部分涉及到WDM驱动的差别会有特别说明。 在Console控制台下,我们的有一个入口函数main;在Windows图形界面平台下,有另外一个入口函数Winmain。我们只要在这入口函数里面调用其他相关的函数,程序就会按照我们的意愿跑起来了。在我们用IDE开发的时候,也许你不会发现这些细微之处是如何配置出来的,一般来说我们也不用理会,因为在新建工程的时候,IDE已经帮我们把编译器(Compiler)以及连接器(Linker)的相关参数设置好,在正式编程的时候,我们只要按照规定的框架编程就行了。 同样,在驱动程序也有一个入口函数DriverEntry,这并不是一定的,但这是微软默认的、推荐使用的。在我们配置开发环境的时候我们有机会指定入口函数,这是链接器的参数/entry:"DriverEntry"。 入口函数的声明 NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject,PUNICODE_STRING pRegistryPath) DriverEntry主要是对驱动程序进行初始化工作,它由系统进程(System)创建,系统启动的时候System系统进程就被创建了。 驱动加载的时候,系统进程将会创建新的线程,然后调用执行体组件中的对象管理器,创建一个驱动对象

VC++ 全局变量定义

谁都会走 提交于 2020-02-15 11:15:54
vc定义全局变量及extern用法 : 全局变量一般这样定义: 1。在一类的.cpp中定义 int myInt; 然后再在要用到的地方的.cpp里extern int myInt;这样就可以用了。 2。在stdafx.cpp中加入: int myInt; 然后在stdafx.h中加入: extern int myInt 这样定义以后无论在什么文件中都是可见的. 来源: https://www.cnblogs.com/profession/p/12310795.html

iOS开发-UITabBarController

一曲冷凌霜 提交于 2020-01-03 17:58:35
- (void)viewDidLoad { [super viewDidLoad]; //创建TAB的VC UIViewController* vc1 = [[UIViewController alloc] init]; homeVC.view.backgroundColor = [UIColor yellowColor]; UIViewController* vc2 = [[UIViewController alloc] init]; canteenVC.view.backgroundColor = [UIColor orangeColor]; UIViewController* vc3 = [[UIViewController alloc] init]; cartVC.view.backgroundColor = [UIColor redColor]; UIViewController* vc4 = [[UIViewController alloc] init]; mineVC.view.backgroundColor = [UIColor orangeColor]; self.viewControllers = @[ [self setTabBarVC:@"首页" image:@"h" selImage:@"h_selected" vc:vc1], [self

C++ boost 正则表达式用法

℡╲_俬逩灬. 提交于 2019-12-17 12:33:59
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 什么是正则表达式?正则表达式是一种用来描述一定数量文本的模式。Regex代表Regular Express。 如果您不知道什么是正则表达式,请看这篇文章http://blog.csdn.net/begtostudy/archive/2007/11/11/1879206.aspx 有了正则表达式的基础,问题是如何使用。我们以boost::regex来说 先看一个网上经典的例子。 #include "stdafx.h" #include <cstdlib> #include <stdlib.h> #include <boost/regex.hpp> #include <string> #include <iostream> using namespace std; using namespace boost; regex expression("^select ([a-zA-Z]*) from ([a-zA-Z]*)"); int main(int argc, char* argv[]) { std::string in; cmatch what; cout << "enter test string" << endl; getline(cin,in); if(regex_match(in.c_str(),

vs2010 C++ MessageBox错误

岁酱吖の 提交于 2019-12-07 02:57:29
vs2010 C++ MessageBox错误 错误信息: 错误1:error C2664: “MessageBoxW”: 不能将参数 2 从“const char [2]”转换为“LPCWSTR” 错误2:IntelliSense: "const char *" 类型的实参与 "LPCWSTR" 类型的形参不兼容 解决方案: 项目属性->常规->字符集 将 使用 Unicode 字符集 修改为 使用多字节字符集 来源: oschina 链接: https://my.oschina.net/u/196099/blog/175194

vs2017 curl7.6编译

余生长醉 提交于 2019-12-06 08:26:46
nmake /f Makefile .vc mode = static VC = 15 MACHINE =x86 nmake /f Makefile .vc mode = dll VC = 15 MACHINE =x86 curl-7.65.0\winbuild\ nmake vc= 15 是vs2017 来源: https://www.cnblogs.com/hshy/p/11972129.html

vc++6.0中使用sqlite的数据库

China☆狼群 提交于 2019-12-06 08:00:48
vc++使用sqlite3 在 http://sqlite.com/download.html 找到( sqlite-dll-win32-x86-3071100.zip ) 下载得到 sqlite3.dll和sqlite.def文件,由于在VC下面要使用.lib文件,所以,自己编译生成.lib文件 第一步: 在D盘新建一个test文件夹加入下载的sqlite3.def和sqlite3.dll文件 第二步: 打开运行,输入cmd通过cd进放 C:\Program Files\Microsoft Visual Studio\VC98\Bin 目录;输入 LIB /out:D:\test\sqlite3.lib /MACHINE:IX86 /def:d:\test\sqlite3.def 在D:\test下面会生成sqlite3.exp和sqlite3.lib文件 在VC下新建MFC工程,把lib加入工程并且下载源码中找到sqlite3.h(相对应的版本)头文件,把它也加入工程,就可以使用了 当然还新建数据库同样在 http://sqlite.com/download.html 找到( sqlite-shell-win32-x86-3071100.zip )下载解压得到sqlite3.exe可执行文件 通过cmd找到sqlite3.exe目录输入 sqlite3.exe User.db

用boost python加快vc程序开发

爷,独闯天下 提交于 2019-11-30 05:22:39
开源项目官方地址: http://www.xiaoniuhui.com/ 原文链接: http://xiaoniuhui.com/#!/用boost-python加快vc程序开发 目录 用标准c接口嵌入python 用boost python嵌入python 用python来实现业务功能 boost python介绍 有两种方式嵌入python:c的方式和boost python的方式。对于c方式,我从来只用它做简单的执行,比如: PyRun_SimpleString("import sys"); PyRun_SimpleString( (std::string("if not '") + (LPCSTR)pathA + "' in sys.path: \n" " sys.path.append('" + (LPCSTR)pathA + "')\n").c_str()); PyRun_SimpleString( (std::string("if not '") + (LPCSTR)pathA + "\\PyModule' in sys.path: \n" " sys.path.append('" + (LPCSTR)pathA + "\\PyModule')\n").c_str()); 第二种方式是通过boost python嵌入python。我基本上都用它。 Boost

【转载】#pragma once与#ifndef #define #endif的区别

冷暖自知 提交于 2019-11-29 16:33:22
一、相同点 两者的共同点都是为了避免同一个文件被 include 多次,但是 #ifndef #define #endif 不只有这个作用。 在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。 二、收集理解 1.#pragma once 这个是编译器相关,就是说在这个编译系统上能用,在其他编译系统不一定行,即移植性差。不过现在基本上已经是每个编译器都有这个定义了。 此方式由编译器保证同一个文件不会被包含多次。注意:这里所说的“同一个文件”是指物理上的一个文件,而不是指内容相同的两个文件。于是不必再费劲想个宏名了,当然也就可以避免宏的名字冲突问题了。 缺点:如果某个头文件有多份拷贝,本方法不能保证他们不被重复包含。 举例:在一般的 MFC 程序中可以看到 #if !defined(AFX_STDAFX_H__32722022_E372_4A5C_8EC5_BBB243CEDE1D__INCLUDED_) #define AFX_STDAFX_H__32722022_E372_4A5C_8EC5_BBB243CEDE1D__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // TODO: reference additional headers your

【原创】使用 VS 编译遇到的一些 error 和 warning(持续更新)

故事扮演 提交于 2019-11-29 00:57:08
【 error C2143 】 error C2143: 语法错误 : 缺少“;”(在“类型”的前面) 原因:以“编译为 C 代码(/TC)”方式编译时,没有把变量定义在函数开始的位置。 【 error LNK2019 】 error LNK2019: 无法解析的外部符号 _abc,该符号在函数 _xyz 中被引用 原因: 当前源文件 xyz 中使用了外部符号 abc ,但是无法找到该符号,原因是没有包含对应的 .lib 库文件。 另外可能的原因: 包含了 .lib 库但是没有将相应的符号 abc 导出 还有一种情况是由于头文件和库文件不匹配造成 【error C2733】 error C2733: second C linkage of overloaded function 'wmemchr' not allowed 原因:针对处于 C++ 模式下的 VC6 以及其它 VS 版本,当进行 ARM 相关编译时应该对要使用的 <wchar.h> 头文件进行 'extern "C++" {}' 处理。 #ifdef __cplusplus extern "C" { #endif # include <wchar.h> #ifdef __cplusplus } #endif 【error C2440】 error C2440: “=”: 无法从“void *”转换为“void **”