![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
苦寒
架构设计
展开
-
C++通过ADO调用存储过程
很久以前就在网上找了一些关于用C++调用数据库存储过程的文章,并用到了自己的项目中。网上的文章都是要定义_CommandPtr和_ParameterPtr类型的智能指针对象,然后用pCmd->Excute(...)的方法来执行。这样做也没什么不好,就是麻烦了点。这两天突然来了灵感,想到一个更简单的方法:#include #include using namespace std;#i原创 2013-10-21 10:35:08 · 3344 阅读 · 0 评论 -
cout/cerr/clog之异同极其重定向
最近刚入手了一本《C++ Primer(第五版)》,开始按照C++0x的标准把之前积累的C++知识重头梳理一遍。在看到“初识输入输出”这一小节时,见书中提到了cout/cerr/clog三个输出对象,但说得又不分明,于是百度了一下,学习了这三者间的异同以及重定向方法,但同时又发现网上关于重定向的说法和我的实测结果不吻合,故总结为此文,与大家交流讨论。 C++的iostream库中定义了4个原创 2013-10-22 14:37:34 · 3469 阅读 · 2 评论 -
error C2220: 警告被视为错误 - 没有生成“object”文件
今天编译SumatraPDF源代码时,遇到error C2220: 警告被视为错误 - 没有生成“object”文件。这是因为makefile文件中对编译器执行了/WX参数,使得编译器把警告信息当作错误对待,有了error,自然无法生成object文件。找到mupdf文件夹下的makefile.msvc文件,用文本编辑器打开后查找“/WX”字符串,我找到两个,第一个写在注释中,不管它;第二原创 2013-10-31 23:59:47 · 6299 阅读 · 1 评论 -
'nmake' 不是内部或外部命令,也不是可运行的程序或批处理文件
今天编译了SumatraPDF的源代码,在“清理”的时候出现错误:'nmake' 不是内部或外部命令,也不是可运行的程序或批处理文件导致清理失败。这是因为VS默认没有把nmake加入环境变量。其实解决方法很简单:在开始菜单中找到Visual Studio x64 Win64命令提示(2010),单击运行,出现了命令提示行黑窗口,把要打开的sumatrapdf-vc2010.原创 2013-10-31 23:50:22 · 6967 阅读 · 1 评论 -
从已有的内存区域创建IStream内存流对象
最近在修改一个开源程序,其中要用到IStream流,找了好久,终于知道了如何从已有的内存区域创建一个IStream内存流对象。HANDLE hFile=CreateFile(szFilePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); //从指定的路径szFi原创 2013-11-20 14:44:17 · 4372 阅读 · 0 评论 -
c++通过ado获取存储过程的return返回值
今天写了个sql server 2005的存储过程,主要代码很简单,就是想测试存储过程中既有输入参数,又有返回值时,如何用C++去调用并获取返回值。一开始总不能运行,后来又莫名其妙地可以运行了,故写在这里做个记录。存储过程源码:ALTER PROCEDURE [dbo].[PublishSchema] @mSchemaID intASdeclare @mReturnValue int原创 2013-11-14 16:28:41 · 2624 阅读 · 0 评论 -
C++几种内存分配方法的效率测试与比较
这几天做的一个项目要频繁new许多对象,对于频繁调用new对效率的影响只停留在理论上,没有一个直观的认识,故做了一个小测试。本次测试只对比了三种内存分配方式: 1. 频繁调用new 2. 一次性new足够的内存,再用placement new产生对象到已分配的内存 3. 用vector测试代码如下#include #include #include using namespace原创 2013-12-24 22:32:24 · 3023 阅读 · 0 评论 -
函数GetFullPathName的调用细节
函数GetFullPathName的细节一开始查看了在线的msdn,看到这样的示例:#include #include #include #define BUFSIZE 4096#define LONG_DIR_NAME TEXT("c:\\longdirectoryname") void _tmain(int argc, TCHAR *argv[]){ DWOR原创 2014-03-04 08:56:43 · 8796 阅读 · 0 评论