C++
文章平均质量分 77
百鸣
这个作者很懒,什么都没留下…
展开
-
c++/C 获得文件的属性文件真实修改之后再更新内存
【Kenmark】:http://topic.csdn.net/t/20021127/11/1209086.htmlhttp://topic.csdn.net/t/20020613/19/801649.htmlhttp://topic.csdn.net/t/20020918/09/1032607.html【nevergone】:GetFileAttributes【K转载 2017-01-24 10:40:26 · 731 阅读 · 0 评论 -
win32 的DLL中创建windows窗口
因工作需要,需要写一个DLL,在DLL中创建windows窗口,网上有很多关于DLL创建窗口的文章,不过是基于MFC的, 却鲜见直接用win32的DLL创建的。研究调试了一下,实现了在win32 DLL中创建窗口,集结成文,分享一下。 实际上,用win32 DLL创建窗口有一个问题: 1.CreateWindow用到的HINSTANCE从哪里来? 答:使用DllM转载 2012-12-12 11:25:27 · 2651 阅读 · 0 评论 -
Win32dll工程添加MFC窗口类之后遇到的各种问题
首先我是创建了一个win32的dll工程:多线程调试 DLL (/MDd)以及使用标准 Windows 库这样的属性,我的测试工程是一个win32控制台引用程序,相应的属性DLL (/MDd)使用标准 Windows 库。主要是通过win32控制台应用程序来测试dll存在的问题,各种纠结,总结一下整个过程遇到的问题和相应的解决方法以备以后的参考学习,感谢各种大神!在dll工程里面:这里由于原创 2012-12-11 17:17:25 · 2999 阅读 · 0 评论 -
各种类型的DLL
(一)DLL和EXE的区别:尽管 DLL 和应用程序都是可执行的程序模块,但它们之间有若干不同之处。对于最终用户来说,最明显的差异在于 DLL 不是可直接执行的程序;从系统角度讲,应用程序和 DLL 之间有两个基本差异: 应用程序可有多个同时在系统上运行的实例,而 DLL 只能有一个实例。应用程序可以拥有堆栈、共用内存、文件句柄、消息队列这样的事物,而 DLL 不能转载 2012-12-11 16:48:38 · 944 阅读 · 0 评论 -
vector作为参数传递到dll问题
最近的一个项目中遇到了调用别人的sdk接口(dll库)而传给我的是一个vector指针,用完之后还要我来删除的情况。这个过程中首先就是在我的exe中将其vector指针转为相应指针再获取vector中相应的数据问题,始终都获得不了正确的数据,要么就是一些非法的数据;另一个问题就是delete这个指针时候会产生相应异常(针对这个问题的思考:如果EXE和DLL都链接到DLL的C/C++运行期库,那么代转载 2012-12-10 16:00:53 · 9559 阅读 · 2 评论 -
触发ASSERT(afxCurrentResourceHandle != NULL)错误的原因
这种错误的原因是由于要使用MFC库中的某些资源,但是MFC并没有被初始化. 这种情况多发生在atl和其它非MFC工程,后追加MFC的头文件获得了部分支持现象:1) 编译可以通过 2)有些MFC类可以使用 3) 使用CRectTracker, CMenu.LoadMenu....时出现触发ASSERT(afxCurrentResourceHandle != NULL)错误解决办法:转载 2012-12-05 10:22:58 · 7871 阅读 · 3 评论 -
TCHAR和char 的相互转化
没有定义UNICODE,所以它里面的字符串就是简单用" "就行了,创建工程的时候包含了UNICODE定义,就必须对TCHAR和char进行转换。首先是把TCHAR转为char[cpp] view plaincopyprint?//将TCHAR转为char //*tchar是TCHAR类型指针,*_char是char类型指针 TcharToChar转载 2012-10-31 10:35:00 · 993 阅读 · 0 评论 -
C/C++语言中的main函数,参数argc,argv的作用
C/C++语言中的main函数,经常带有参数argc,argv,如下:int main(int argc, char** argv) int main(int argc, char* argv[])这两个参数的作用是什么呢?argc 是指命令行输入参数的个数,argv存储了所有的命令行参数。假如你的程序是hello.exe,如果在命令行运行该程序,(首先应该在命令行下用 cd 命令进入到转载 2012-10-08 11:23:40 · 1869 阅读 · 0 评论 -
IE8 /IE9 VS2003 C# ASP.NET c++ 断点 不能 无法调试 断点失效
解决:(原文) IE 8 has a feature called Loosely-Coupled Internet Explorer (LCIE) which results in IE running across multiple processes.http://www.microsoft.com/windows/internet-explorer/beta/readiness转载 2012-10-08 11:14:57 · 2500 阅读 · 0 评论 -
c和c++变量的存储
一.首先, 在c中分为这几个存储区 1.栈 - 由编译器自动分配释放 2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放 4.专门放字符串常量的地方。- 程序结束释放 5 程序代码区转载 2012-10-08 11:02:23 · 1154 阅读 · 0 评论 -
setsockopt设置socket状态
1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,不经历转载 2013-06-07 10:03:37 · 859 阅读 · 0 评论 -
atlsocket.inl(26): error C3861: “FreeAddrInfo”: 即使使用参数相关的查找
今天编译一个工程遇到了这个错误:atlsocket.inl(26): error C3861: “FreeAddrInfo”: 即使使用参数相关的查找。网上搜了挺多的资料,说来还是google给力啊,baidu不行啊。找了挺多的方案:下面这个就参考一下吧,不太理解如何解决这个问题,我试了没有解决我的问题。今天在编译MPC的时候,出现了这个错误提示,很奇怪,前段时间编译都是一次性通过原创 2013-06-26 15:56:07 · 1675 阅读 · 0 评论 -
解决socket交互的10048和10055错误的总结
问题:60多路轮训的情况下,5分钟之后,现场报链接不上子进程的错误。绝大部分为海康设备分析:子进程的日志中 存在输入海康的解码库的错误,在子进程的对外dll中加日志发现,socket链接的时候存在10048(通常每个套接字地址(协议/网络地址/端口)只允许使用一次)的错误。公司重现的情况还存在10055(由于系统缓冲区空间不足或列队已满,不能执行套接字上的操作 )的错误。10055原创 2017-01-24 10:37:28 · 8758 阅读 · 2 评论 -
sqlite3 多线程和锁 ,优化插入速度及性能优化
http://www.cnblogs.com/huozhong/p/5973938.html转载 2017-01-18 11:09:13 · 1223 阅读 · 0 评论 -
Windows中的进程的Working Set,Private Bytes和Virtual Bytes (2015-09-24 14:32:23)
内部布局和优化,VirtualSize Private Size WorkingSet转载 2016-12-19 15:39:08 · 1374 阅读 · 0 评论 -
C/C++ 服务端性能评测和检测优化工具
硬件服务器的稳定性 可以通过烤机软件:随便网上搜个跑跑看,顺便统计下网路的稳定性服务器端程序的优化评测:英特尔工具套件1、Intel Parallel Amplifier2、 VTune Performance Analyzer3、 Intel Thread Profilergprof gnu的profiling工具,会告诉你每个函数调用时间,以及占用的百分比。上网转载 2016-03-23 23:22:48 · 2364 阅读 · 0 评论 -
windows 一个进程(Process)最多可以生成多少个线程(Thread)
1.进程中创建线程的限制默认情况下,一个线程的栈要预留1M的内存空间,而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程,但是内存当然不可能完全拿来作线程的栈,所以实际数目要比这个值要小。#define MAX_THREADS 50000#include Windows.h>#include stdio.h>DWORD WINAPI T转载 2015-11-07 08:58:55 · 10446 阅读 · 0 评论 -
wireshark 抓本地包
两个主机之间抓包:wireshark 具体使用说明请参照wireshark的使用说明本机包:1.本机IP加本机IP路由到网关 route add 10.3.0.97 mask 255.255.255.255 10.3.0.1 metric 1用完删除,以免网络过载。 route delete 10.3.0.97wireshark2.127.0.0.1XP系统转载 2015-03-27 11:39:05 · 2187 阅读 · 0 评论 -
select, iocp, epoll,kqueue及各种I/O复用机制
看到一篇对各种I/O模型讲得比较简单易懂的文章,转载了,呵呵~~ 文章出处: http://blog.csdn.net/shallwake/archive/2010/01/28/5265287.aspx 首先,介绍几种常见的I/O模型及其区别,如下:blocking I/Ononblocking I/OI/O multiple转载 2015-01-07 10:24:56 · 846 阅读 · 0 评论 -
从零开发一个产品记录2013年
详细设计之后就是项目的任务的划分,此时乃是荣耀和光荣的时刻,倾向于c++的内部实现的划分,好处是参与的人的都比较的了解和认可如此的分法,划分的模块也是比较的独立性,坏处项目专员不太了解,小心大家的分被她给克扣了,任务划分之后,项目专员的时间计划为此项目的时间把控乃至接下来的项目的时间安排和小团队的协作都至关重要,在一定程度上也可以激励我等比较合理准时的完成项目,对于领导来说也可以通过次感受项目的进度,看什么时间可以得到他的3S服务器,哈哈,嘘,领导再一次被调侃。目前来说我等走的是项目管理中的瀑布模型吧。原创 2014-06-03 09:51:39 · 935 阅读 · 0 评论 -
定位Release程序崩溃原因 SetUnhandledExceptionFilter + StackWalker
SetUnhandledExceptionFilter + StackWalker 这个方案需要自己动手往工程里添加代码了。要实现上面的想法,需要做两件事情:1、需要在crash时有机会对程序堆栈进行处理;2、对堆栈信息进行收集。 1、SetUnhandleExceptionFilter函数 Windows平台下的C++程序异常通常可分为两种:结构转载 2013-08-26 14:55:11 · 4320 阅读 · 2 评论 -
GDI+往jpg图片文件里面添加属性值
最近有个项目需求:1.如果图片是非jpg格式的如bmp格式的则将bmp格式的图片文件转为;2.往jpeg图片中添加两个属性值用来以读取属性值进行图片的分类查找等操作;所实现的功能简单,所以就用了c++的GDI+库。但是在实现的过程中确实遇到了不少奇怪的问题:(1)首先是将所需要的头文件和lib库导入工程:#include #include #include usin原创 2012-08-13 12:33:30 · 1668 阅读 · 0 评论 -
dll文件加载运行加载的14001错误,由于应用程序配置不正确,应用程序未能启动
最近在处理项目问题的的时候发现了这么一个问题,就是我们的程序在调用第三方提供的dll文件的时候在一台机器上面会报14001的错误,但是在另一台机器上面不会。两台机器上面的操作系统是相同的。针对这个问题和这个错误码,查找了很多的相关资料。vc错误查找的给予的对于14001的错误的解释:由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。 下面是搜集的一些网络原创 2012-07-23 13:06:34 · 21374 阅读 · 0 评论 -
extern "C" 与 __stdcall使用
xtern "C" __declspec (dllexport) char* __stdcall SQLFetch(const char* fieldname);C語言中extern cc与c++程序连接问题 它们之间的连接问题主要是因为c c++编绎器对函数名译码的方式不能所引起的,考虑下面两个函数 /* c*/ int strlen(char* string) { ...转载 2012-06-18 09:53:25 · 6472 阅读 · 0 评论 -
error C2065: “IDOK” : 未声明的标识符
今天处理MFC工程的时候不知怎么搞的就出现了error C2065: “IDOK” : 未声明的标识符这样一个错误,在#include "resource.h"中添加#define IDOK 1是可以解决问题的,添加编译通过之后,是成功的,但是再删除之后就不行了。纠结啊,在网上搜了很多资料,有几个相关的但是方法都不真正的解决问题的。我用的编译器是vs2003 IDOK的定义不是在这里的而是在W原创 2012-06-14 20:27:54 · 1823 阅读 · 0 评论 -
C/C++预编译头的概念
预编译头的概念:所谓的预编译头就是把一个工程中的那一部分代码,预先编译好放在一个文件里(通常是以.pch为扩展名的),这个文件就称为预编译头文件这些预先编译好的代码可以是任何的C/C++代码--------甚至是inline的函数,但是必须是稳定的,在工程开发的过程中不会被经常改变。如果这些代码被修改,则需要重新编译生成预编译头文件。注意生成预编译头文件是很转载 2012-06-14 18:00:01 · 8812 阅读 · 0 评论 -
模态窗口创建非模态窗口,MFC定时器完成对一个文件的监测,定时刷新窗口
初次用MFC,对所做的小东西做个总结,大部分都是从网上学习的,希望对读到的人有稍微的帮助1.要创建的非模态窗口:继承于CDHtmlDialog#define WM_USER_DVRERRWND_CLOSE WM_USER + 1001BOOL CDDvrLoginErrMessHtmlDialog::OnInitDialog(){ CDHtmlDialog::OnInitD原创 2012-06-04 22:39:46 · 2030 阅读 · 0 评论 -
三十分钟掌握STL
三十分钟掌握STL这是本小人书。原名是《using stl》,不知道是谁写的。不过我倒觉得很有趣,所以化了两个晚上把它翻译出来。我没有对翻译出来的内容校验过。如果你没法在三十分钟内觉得有所收获,那么赶紧扔了它。文中我省略了很多东西。心疼那,浪费我两个晚上。译者:karycontact:karymay@163.netSTL概述STL的一个重要特点是数据结构和算法的分离。尽转载 2012-06-01 09:13:17 · 567 阅读 · 0 评论 -
c/c++ 获取文件的属性
【Kenmark】:http://topic.csdn.net/t/20021127/11/1209086.htmlhttp://topic.csdn.net/t/20020613/19/801649.htmlhttp://topic.csdn.net/t/20020918/09/1032607.html【nevergone】:GetFileAttributes【K转载 2012-05-30 09:31:13 · 9404 阅读 · 0 评论 -
MFC中两种定时器
在MFC中有两种定时器: 一、自定义回调函数的定时器,如设置定时器函数原型: UINT_PTR SetTimer( HWND hWnd, // 窗口句柄 UINT_PTR nIDEvent, // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器 UINT uElapse, // 时间间隔,单位为毫秒 TIMERPROC lpTi转载 2012-05-29 15:11:41 · 9136 阅读 · 0 评论 -
dll文件的加载顺序
程序的运行要去加载所需要的dll文件,在程序运行的时候往往会遇到dll找不到的问题,或者不能确定所加载的dll文件是否是自己所需要的dll,遇到dll出问题的时候往往会不知所措,但是一旦知道了dll的加载顺序,按这个去查找解决就会方便和得心应手了。(声明下面的东西是本人从网上整理下来的,供参考学习)。(1)先搜索可执行文件所在路径,再搜索系统路径:%PATH%(环境变量所配置的路径)一般P原创 2012-05-28 19:53:04 · 6666 阅读 · 1 评论 -
#pragma once与 #ifndef的区别
为了避免同一个文件被include多次我们有下面的两种方式1 #ifndef方式2 #pragma once方式在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。 方式一: #ifndef __SOMEFILE_H__ #define __SOMEFILE_H__ ... ... /转载 2012-05-28 19:58:28 · 604 阅读 · 0 评论 -
C++ const用法总结
面向对象是C++的重要特性. 但是c++在c的基础上新增加的几点优化也是很耀眼的 就const直接可以取代c中的#define 以下几点很重要,学不好后果也也很严重 const 1. 限定符声明变量只能被读 const int i=5; int j=0; ... i=j; //非法,导致编译错误 j=i; //合法 2.转载 2012-07-05 13:07:24 · 939 阅读 · 0 评论 -
Address in use::::WIN32 error 10048 svrSocket errMessage = WIN32 error 10055
Address in use::::WIN32 error 10048 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。WIN32 error 10055 由于系统缓冲区空间不足或列队已满,不能执行套接字上的操作。 (转)TIME_WAIT状态根据TCP协议定义的4次握手断开连接规定,发起socket主动关闭的一方socket将进入TIME_转载 2012-06-21 17:20:32 · 1913 阅读 · 0 评论 -
MFC如何实现打开一个文件,就像安装完某个程序然后弹出一个readme.txt一样?
MFC如何实现打开一个文件,就像安装完某个程序然后弹出一个readme.txt一样?同上------解决方案--------------------------------------------------------使用api函数:ShellExecute Q: 如何打开一个应用程序? ShellExecute(this-> m_hWnd, "ope转载 2012-06-21 17:25:49 · 3224 阅读 · 0 评论 -
C++MFC运行的程序不在任务管理器的应用程序显示但是在进程中显示
1.需求目标描述:C++MFC运行的程序不在任务管理器的应用程序显示但是在进程中显示 2.解决方案: (1)MFC中的窗体显示格式编辑函数格式ModifyStyleEx //隐藏对话框 ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW); WINDOWPLACEMENT wp; //显示隐藏 wp.length=siz原创 2012-07-11 15:13:45 · 7436 阅读 · 0 评论 -
Visual Studio中的文件类型(sln vcproj suo user ncb)
Net解决方案下 .sln文件和.suo文件的解释:When a Web site is created, a solution file (.sln) and a hidden solution user options file (.suo) are created. By default, these files are created in the My Documents\Vis转载 2012-06-26 13:45:34 · 5228 阅读 · 2 评论 -
C++头文件和源文件的关系
一、源文件如何根据#include来关联头文件 1,系统自带的头文件用尖括号括起来,这样编译器会在系统文件目录下查找。 #include 2,用户自定义的文件用双引号括起来,编译器首先会在用户目录下查找,然后在到C++安装目录(比如VC中可以指定和修改库文件查找路径,Unix和Linux中可以通过环境变量来设定)中查找,最后在系统文件中查找。 #include “xxx.h”转载 2012-07-05 13:19:27 · 3016 阅读 · 0 评论 -
关于typedef的用法总结
关于typedef的用法总结 不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中。typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些C/C++的学习者的博客,其中有一篇关于typedef的总结还是很不错,由于总结的很好,我就不加修改的引用过来了,以下是引用的内容(红色部分是我自己写的内容)。转载 2012-07-05 13:17:39 · 487 阅读 · 0 评论 -
c和c++变量的存储
一.首先, 在c中分为这几个存储区 1.栈 - 由编译器自动分配释放 2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放 4.专门放字符串常量的地方。- 程序结束释放 5 程序代码区转载 2012-07-05 13:08:26 · 797 阅读 · 0 评论