VC/VC++
文章平均质量分 79
GamebabyRockSun_QQ
曾经拥有的,不要忘记,
已经得到的,更要珍惜,
属于自己的,不要放弃,
已经失去的,留着回忆,
想要得到的,必须努力,
但最重要的,是好好爱惜自己!
展开
-
VS2022环境中使用WinFlex&Bison时设置详细输出
我发誓这个*.y文件之前是编译通过的,而且工作的非常好,这次我只是引用一下,看我配置的环境有没有问题,结果就这样了。接着就是按照错误提示修改内容,直到正确执行即可。原创 2022-07-28 18:15:00 · 907 阅读 · 4 评论 -
DirectX12(D3D12)基础教程(外篇一)——编译Assimp
DirectX12(D3D12)基础教程(外篇一)——编译Assimp1、前言2、Assimp库简介3、编译Assimp库的准备工作4、下载Assimp源码并编译1、前言 D3D12系列教程因为我转移精力学习Nodejs、VueJs等技能,暂时中断了一段时间,着实感觉有点对不起大家,这期间也有很多网友都在询问RTX系列教程还出不出,在这里一并向大家回复,这个系列将一直不间断,但不定期的更新下去,哪怕MS出到D3D13、D3D14…,只是时间问题请大家能够理解并谅解,毕竟人的精力是有限的,正如金大侠所言原创 2021-04-19 00:25:46 · 2179 阅读 · 8 评论 -
VC++实战OLEDB编程(九)
在前面的系列文章中,关于OLEDB的大概面貌算是介绍清楚了,很多网友也已经开始了伟大的OLEDB编程实践,这也让我很欣慰。但欣慰之余,我认真的审视了前面的内容,结果发现还是遗漏了很多很多非常非常有用的细节,比如我们常用的数据类型转换,这个专题就几乎没有讨论过,以至于很多网友在OLEDB编程应用中还是只能裹足不前,这也成了一个非常严重的障碍,那么这次我就集中精力先把这个障碍扫清吧。一般的,我们应...原创 2017-10-10 14:18:16 · 615 阅读 · 0 评论 -
VC++实战OLEDB编程(八)——行状态与延迟更新
在之前的七篇文章中,我们连续的掌握了从连接数据库到取出数据,再到修改数据的整个过程,同时也看到了一个相对较完整的例子,如果认真阅读并实践前面系列文章的话,那么作为OLEDB编程入门的内容算是都掌握了,当然所有已掌握的内容都是将要学习的新内容的基础,因此之后的文章都要求对前面的内容有熟练的掌握和深刻的理解。OK,下面我们开始新内容的学习。在第六篇文章中,我们介绍了如何修改、新增、删除记录的方法,...原创 2017-10-10 14:18:13 · 566 阅读 · 0 评论 -
VC++ 实战OLEDB编程(七)一个完整的例子
为了方便大家总结和学习前面的章节内容,此处给出一个完整的OLEDB的例子,作为前面所有内容的一个总结,使用VS2008新建一个空的Win32项目,然后新建一个cpp文件,将所有代码都复制粘贴进去,然后编译执行即可,因为这个例子没有什么输出,所以建议使用调试方式一步步执行看程序的执行逻辑,代码中注释的部分并不表示没有用处,而是一些功能性的代码,有些事开关,有些是特殊功能,可以自己选择性...原创 2017-10-10 14:18:10 · 1135 阅读 · 3 评论 -
VC++ 实战OLEDB编程(六)
前面的系列文章中,我们主要讨论的是如何“获得”或者“读取”数据,关键的步骤就是如何执行一个SQL语句,并读取语句的结果集,包括读取BLOB型数据。对于一般的任务来说,这些基本的操作已经足够了,因为只要可以执行SQL语句,那么大多数数据库任务就可以很好的完成了,而我们要做的就是以静态或动态的方式拼出SQL语句即可。看起来这很完美,事实上也是这样,在一些应用中,这确实足够了,但是对于一些高级的任务...原创 2017-10-10 14:18:07 · 545 阅读 · 0 评论 -
VC++ 实战OLEDB编程(五)
很久没有更新我的博客了,作为系列文章,OLEDB这个专题的前几篇文章受到了广大网友的极大关注,让我有点受宠若惊了,本想早点完成这个系列,哪怕是后续的文章,无奈杂务缠身,加之原稿和原始代码的丢失,使我不得不又重头建立这些,当然只要有网友的关注,我就会继续将这个话题讨论下去,直到大家都真正的掌握OLEDB这个数据库编程接口,哪怕仅仅是点击率的上涨,对我都是莫大的安慰。前面的系列文章只是使用OLED...原创 2017-10-10 14:18:04 · 499 阅读 · 0 评论 -
VC++ 实战OLEDB编程(四)
在开始新的结果集对象(Rowset)之旅之前,我们再来补充一个关于Command对象的用法,在有些情况下,我们执行的SQL语句只是一个Update、Insert或Delete等操作,有些时候我们可能直接执行就是一个存储过程而已,存储过程可能产生也可能不产生一个结果集,这类没有结果集的SQL语句,我们可以像下面这样来执行:pICommandText->Execute(NULL,IID_N...原创 2017-10-10 14:18:01 · 841 阅读 · 4 评论 -
VC++ 实战OLEDB编程(三)
接下来我们详细的讨论有关命令(Command)对象的各个接口。通过前面的两篇文章,大家应该已经知道一些基础知识:属性集合,属性,对象,接口,如何打开连接,如何创建事务等等,有了这些基础的概念性的知识,对于理解和应用好OLEDB编程接口是非常重要的,对于访问数据源数据的任务来说前面仅仅是开始。对于一个像数据库这类的数据源,操作它最好的方法就是使用SQL语句,在OLEDB中对执行SQL语句提供了完整的...原创 2017-10-10 14:17:58 · 644 阅读 · 2 评论 -
VC++ 实战OLEDB编程(二)
上回书说到(哎哟!谁扔的臭鸡蛋?不好意思忘了我是搞IT的不是说书的了。)在前面我们已经介绍了如何创建一个连接对象(记住叫IDBInitialize,而不是别的什么东西),接下来我们就需要用这个连接对象来创建一个叫做事务的对象了,搞数据库的都知道什么叫事务我就不多说了,这个地方只是强调下一个连接对象可以创建多个事务对象,这一点大家要记清楚,在ATL的OLEDB封装中将连接对象和事务对象被一对一的封装...原创 2017-10-10 14:17:55 · 568 阅读 · 0 评论 -
VC++实战OLEDB编程(十)——关于延迟提交新增行问题的澄清
在“实战OLEDB编程”系列文章中,后面的几篇文章中讨论了一下关于延迟提交的问题,有网友回复说新插入的行无法延迟提交,并说是微软的一个bug,本着怀疑一切和刨根问底的精神,我对这个问题进行了深入的实验和研究,结果发现,这种说法很是不负责任的。现在可以肯定的说新插入行的延迟提交是完全没有任何问题的。至于为什么有网友说不能延迟提交呢?我也分析了一下原因,结果发现,有个关键原因导致新插入行的延...原创 2017-10-10 14:18:22 · 329 阅读 · 0 评论 -
VC++实战OLEDB编程(十一)——参数化查询和存储过程调用
在一些面向业务的应用程序中,很多业务的查询往往是固定的,其中有些甚至只是根据不同的值改变几个固定的条件值而已。比如查询用户信息,通常都是根据用户编号或者用户名称等固定信息查询用户表得到一个结果集。比如查询语句:Select * From 用户表 Where 用户号=’xxxx’。往往在一些程序中,这个语句都是先被组成字符串,然后被执行。之前文章中的例子也是这样做的,最终的SQL语句都是一个字...原创 2017-10-10 14:18:24 · 752 阅读 · 0 评论 -
C++11标准Flex及Bison文件,请结合WinFlex&Bison编译调试
目录1、前言2、标准C++词法文件(没有整理全,可以参考C的标准词法文件和C++的语法文件补充完整)3、标准C++语法文件(C++11规范,未整理完全,部分可优化,请自行参考语言规范整理)1、前言鉴于这段时间美国总统特朗普先生对以华为为代表的中国企业围堵的全面升级,本人将平时收集整理的标准C++语言的Flex和Bison元文件发出来,供大家参考。算是为反围堵尽自己的一份绵...原创 2019-05-23 00:48:26 · 1536 阅读 · 0 评论 -
标准C语言Flex及Bison文件,请结合WinFlex&Bison编译调试
目录1、前言2、ANSI C 词法文件3、ANSI C 语法文件4、ISO C 标准语法文件(未整理,请参考前两个即可整理)1、前言鉴于这段时间美国总统特朗普先生对以华为为代表的中国企业围堵的全面升级,本人将平时收集整理的标准C语言的Flex和Bison元文件发出来,供大家参考。算是为反围堵尽自己的一份绵薄之力。请注意文件只是标识了标准的词法和语法,并没有语法分析和语...原创 2019-05-23 00:40:58 · 1536 阅读 · 2 评论 -
DirectX12(D3D12)基础教程(八)——多显卡渲染基础、共享纹理、多GPU同步
目录1、前言2、为什么要多显卡渲染3、多显卡渲染核心原理3.1、多GPU拓扑模型及工作方式3.1.1、隐式多显卡系统3.1.2、显式多显卡系统3.1.3、链接的多显卡系统3.1.4、无链接的多显卡系统3.2、无链接显式多显卡系统的核心关键点——共享资源4、异构多显卡渲染框架示例——核显+独显方式4.1、创建多个设备对象4.2、创建交换链及渲染目标...原创 2019-02-01 20:39:50 · 11044 阅读 · 7 评论 -
DirectX12(D3D12)基础教程(七)——渲染到纹理、正交投影、UI渲染基础
目录 1、前言2、渲染到纹理3、调试支持4、正交投影5、UI渲染基础6、本章完整代码链接1、前言记得那是在差不多10多年前,我在工作中认识了一位好兄弟小杨。那时他刚毕业,跟我是同一所大学,算我的校友。彼时,我已工作快10年了,在当时那家不大的软件公司管VC++研发部。小杨加入了我的团队。他长了个圆脸,跟我一样戴副眼镜,话语不多,而且眼睛中并没有闪烁着我希望看到的...原创 2019-01-26 14:05:00 · 5719 阅读 · 22 评论 -
DirectX12(D3D12)基础教程(六)——多线程渲染
目录 1、前言2、为什么要多线程渲染3、多线程3.1、什么是线程3.2、进程的主线程3.3、线程的入口函数3.4、创建线程3.5、CreateThread示例3.6、C/C++创建线程函数(VC版)3.7、_beginthreadex示例3.8、线程退出3.9、线程的暂停(挂起)和恢复3.10、线程的暂停式创建3.11、线程栈3...原创 2019-01-14 21:39:37 · 13117 阅读 · 31 评论 -
DirectX12(D3D12)基础教程(五)——理解和使用捆绑包,加载并使用DDS Cube Map
目录 1、前言2、加载DDS3、捆绑包(Bundles)4、完整代码1、前言这一次距上一篇教程又隔了有一段时间了,如果你看了之前的教程的话,马上就会想到悲催的我是不是又遇到了什么麻烦?应该说你能这样想那么恭喜你,你猜对了,这次搞得我人仰马翻的是DDS纹理。其实在我之前的教程中乐观的估计了WIC库,其实这个库根本就不能用来加载DDS型的纹理。当然教程到这里,我已经被纹理问...原创 2018-11-19 22:48:44 · 9299 阅读 · 7 评论 -
DirectX12(D3D12)基础教程(三)——使用独立堆以“定位方式”创建资源、创建动态采样器、初步理解采取器类型
目录 1、前言2、显卡架构和存储管理3、创建默认堆并在其上以“定位方式”创建2D纹理4、动态采样器5、完整代码1、前言经过了第二部分教程的“折腾”之后,后面的教程我觉得应该顺畅多了。至少我现在可以一天时间就把教程示例代码调通,并且可以按照自己的想法自由的去发挥了。我很喜欢这种感觉,就像在打游戏中虐那些无脑的机器AI角色一样。经过前面两章的学习,我相信大家对D3D...原创 2018-10-27 17:21:15 · 8992 阅读 · 23 评论 -
为何D3D11的几个矩阵需要转置?
在学习D3D11的时候遇到一个问题,事情是这样的:D3D11引入了常量缓存(const buffer)用来实现数据的高速传输,这块儿buffer是CPU Only Write,GPU Only Read这样的特点,其他还是D3D9的惯例。在我调用完g_pD3DImmediateContext->Map的时候,出现了没有任何图像的问题,后经过改造后,显示终于正常了,先上代码: // ...原创 2017-10-10 14:21:59 · 1150 阅读 · 0 评论 -
VC++ 实战OLEDB编程(一)
很久没有写点新的东西了,最近实在是非常的忙,也没有时间去料理自己的博客,今天总算是休息一下,写点东西,算是给自己交个差吧。这次我准备系统的介绍下OLEDB编程的一些内容。OLEDB作为目前最全面,最强大的Windows平台下的数据库编程接口,其资料在网上却少之又少,这着实有些让人纳罕。现在很多的应用软件系统都要和数据库打交道,没有一个好的强大的数据库编程接口作为支撑,这些系统的功能,性能,...原创 2017-10-10 14:17:52 · 3459 阅读 · 0 评论 -
关于下载、编译及运行DirectX Raytracing Sample Code (DXR)若干小问题及解决方法
伴随Nvidia公司全新一代RTX20XX系显卡的发布,微软公司也及时的更新了配套的DXR演示代码。下载地址:https://github.com/Microsoft/DirectX-Graphics-Samples/releases在下载页面中主要要下载如图红色箭头所指的几个包: 下载过程中因为Github链接加密的问题,普通的下载工具下载速度慢并且会中断,因此建议使用Githu...原创 2018-09-05 11:36:20 · 3389 阅读 · 7 评论 -
WSARecv参数lpNumberOfBytesRecvd的一个变态问题
这个函数干嘛的我就不多说了,搞winsock编程的都认识它!我在使用这个函数时,按照MSDN上的描述,将lpNumberOfBytesRecvd设定成了NULL,因为咱是IOCP嘛,照MSDN的说法,如果LPWSAOVERLAPPED不为NULL,那么这个参数可以设定为NULL。我也就这样使用了,程序跑起来,测试也正常,但是有些情况下不稳定,我这可是服务器啊,任何问题都必须被消灭,于是开始Debu原创 2017-10-10 14:17:40 · 552 阅读 · 0 评论 -
关于this指针的传递问题总结
1:__cdecl成员函数 通过ECX传递this指针 mov ecx, 对象的地址 call 成员函数2:__stdcall成员函数 通过堆栈传递this指针 push 对象的地址 call 成员函数用非静态成员作为线程函数原理分析:1.该线程的主函数为类的非静态成员函数,所以它认为他的调用者会为他传递一个this指针,通过堆栈传递.因为__stdcall的函原创 2017-10-10 14:17:27 · 1412 阅读 · 0 评论 -
我实现的B+树C++模版类(V0.50)
下面是我实现的B+树C++模版类,利用了windows中的一些特性,关于B+树的算法我不再赘述,大家自己搜索一下,满网络都是,此处的实现是一个非常好用的模版版本。可以免费用于任何用途,在版本升级或发生变动后,本人将不通知任何使用者,但是如果需要技术支持、升级服务或培训服务的可以与本人联系,QQ 41750362。 注意这个地方是0.5版,可以使用但是不很方便,封装还不是很好,本人正原创 2017-10-10 14:17:21 · 425 阅读 · 0 评论 -
我实现的红黑树C++模版类
下面是我实现的红黑树C++模版类,利用了windows中的一些特性,关于红黑树的算法我不再赘述,大家自己搜索一下,满网络都是,此处的实现是一个非常好用的模版版本。可以免费用于任何用途,在版本升级或发生变动后,本人将不通知任何使用者,但是如果需要技术支持、升级服务或培训服务的可以与本人联系,QQ 41750362。//红黑树#include "GRSPublicDef.h"#include "G原创 2017-10-10 14:17:18 · 368 阅读 · 0 评论 -
我实现的AVL树模版类
下面是我实现的AVL树C++模版类,充分利用了windows中的一些特性,关于AVL树的算法我不在赘述,大家自己搜索一下,满网络都是,此处的实现是一个非常好用的模版版本。可以免费用于任何用途,在版本升级或发生变动后,本人将不通知任何使用者,但是如果需要技术支持、升级服务和培训服务的可以与本人联系,QQ 41750362。#include "GRSPublicDef.h"#include "GR原创 2017-10-10 14:17:15 · 282 阅读 · 0 评论 -
模板类使用friend时需要注意的一个问题
在使用模版类封装一个B-Tree时我遇到了一个问题,我的模版类定义如下://节点类定义template class CGRSBTreeNode{……public: friend class CGRSBTree; //注意这一行,实际不能这样使用的}; //B-Tree类的定义template class CGRSBTree{prote原创 2017-10-10 14:17:12 · 542 阅读 · 0 评论 -
一个愚蠢的错误,一次深刻的教训
这几天自鸣得意的定义了一个异常类,如下: class CGRSException { protected: public: CGRSException(); CGRSException(UINT nCode,EXCEPTION_POINTERS *ep); CGRSException(DWORD dwLastError); CGRSException(LPCTSTR psz原创 2017-10-10 14:17:10 · 602 阅读 · 0 评论 -
基于堆栈的时间复杂度为O(n)的箱子排序算法实现
同样的这个堆栈也是基于我的快速链表类实现的,我实现了箱子排序算法来对这个堆栈进行了测试,现在把代码放在这里,有问题都欢迎与本人讨论.箱子排序算法的改进——基数排序算法我将在过年期间实现,这个基数排序的空间效率要比此处的箱子排序算法效率高。template void BoxSort(CGRSFastList& X, int range) {// 按分数排序 UINT len = X.Ge原创 2017-10-10 14:17:06 · 676 阅读 · 0 评论 -
我所知道的软件架构
——兼谈软件引擎的概念 前一久,跟朋友聊天,他强烈要求我写一些关于软件架构方面的文章,这几天总算有点时间来完成此事,算是给朋友交差吧。首先声明,我不是软件架构方面的科班出身,也不是这方面的专家,只能算是这个方面的草根。这篇文章只是10多年来我在C/C++编程中摸爬滚打之后的一点经验之谈,谨代表个人观点,或为各位困惑人士提供点小小的参考。如有不同意见的欢迎来拍转。对于软件架构,我认原创 2017-10-10 14:17:49 · 645 阅读 · 0 评论 -
B+Tree模板改进版0.51版——可独立编译,修改了错误
最近应网友的要求,仔细检查和修改了B+Tree的模板类,修正了几处错误,主要是删除Key的参数错误,同时去掉了那个头文件的包含,直接将头文件的内容贴在了文件开头处,以使此模板类可以独立使用。 注释掉的显示到树控件中的方法,可以在使用MFC的CTreeCtrl情况下自行恢复即可,这样就可以将整个B+Tree显示到树控件中,方便只管的观察B+Tree节点的构造。但是因为B+Tree结构原创 2017-10-10 14:18:43 · 236 阅读 · 0 评论 -
VS2005、VS2008中如何屏蔽讨厌的MSVCR*.dll的引用
VS系列工具作为目前微软主打的集成开发环境,在历经了近20多年的发展后,到如今已经可以说是Windows平台上各种IDE环境中的翘楚了。很多别的开发工具已经难望其项背了,如今VS2010也已经面市很长时间了,但是因为笔者囊中羞涩,无法升级硬件,所以也没有办法去进行那个180天的VS2010体验之旅了,实为憾事。当然这是别话,现在我主要使用的依然是VS2008,用它来开发我想要的东西。当然主要指使用原创 2017-10-10 14:18:52 · 341 阅读 · 0 评论 -
VS2017编译WRL的Callback模版函数兼容性问题及解决方法
近来一直在研究DXR的示例代码,并在其中看到例子中大量的使用了WRL的新模版类代替ATL的老三样的模版类,使用最多的就是COM智能指针Microsoft::WRL::ComPtr类。在聚合使用D3D的接口时,更是像下面这样大量应用该模版包装了D3D的接口:......Microsoft::WRL::ComPtr<IDXGIFactory4> m_dx...原创 2018-09-04 08:48:35 · 2706 阅读 · 6 评论 -
VS2015中设置D3D12根签名HLSL文件自动编译属性时的注意事项
在DirectX12中,一个重要的HLSL高级语法对象就是根签名对象,当前有两种主要的方式来得到根签名:一种是编写一个HLSL代码文件,然后编译得到;另一种方式是在C++代码中填充D3D12_ROOT_SIGNATURE_DESC结构体后创建得到。 后一种方法纯代码,此处暂且不表。 而利用HLSL代码文件方式时,可以利用fxc.exe工具来编译,具体做法是在VS2015中建立一个HLSL代码文件原创 2017-12-05 21:21:01 · 1264 阅读 · 0 评论 -
D3D11和D3D12多线程渲染框架的比较(一)
前言 D3D12伴随DirectX12自2014年正式发布以来已经近3年多时间了。遗憾的是我最近才有时间仔细研究D3D12接口及编程方面的内容。D3D12给我总体的感觉用一句话来概括就是——D3D12是一个“显卡操作系统!”。 得益于我对Windows内核编程的深入了解和掌握,突然发现掌握起D3D12多线程渲染时居然可以无障碍学习,看来并不是学过的东西都会过时,这也是让我暗自窃喜的地方。正所谓原创 2017-12-13 20:25:32 · 11366 阅读 · 0 评论 -
Win10环境下,拦截WM_NCCREATE消息时的一个诡异BUG
Win10环境下,拦截WM_NCCREATE消息时的一个 诡异BUG这几天在编写一个测试渲染管线的程序时,我直接使用了一段大约在10年前封装的一段窗口代码:LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {//窗口过程; LRESULT lRet = 0;原创 2017-11-09 20:56:52 · 780 阅读 · 0 评论 -
基于队列的最短路径搜索算法(A*算法)实现
今天总算实现了一个基于我开发的快速链表的队列,并使用基于队列的最短路径搜索算法做测试,现在把核心函数贴在这里,这个函数参考了《数据结构与算法C++语言描述》书上的FindPath函数,原函数只能朝四个方向搜索,我改成了8个方向,现在把代码贴在这里,与大家分享,有问题请跟贴。#pragma pack(push)#pragma pack(1)struct ST_GRS_POINT{ SHORT原创 2017-10-10 14:17:03 · 1295 阅读 · 0 评论