c/c++
六个沃德
世界和平
展开
-
为什么有些库的头文件只提供类的预先声明,而无类的定义
1.问题的引出在程序设计领域,库可以说是一切程序的基础。当今的程序几乎没有一个是从0实现的,或多或少都是建立在已有实现功能模块的基础上,这些可以被程序员使用具有一定功能的代码模块就叫做库。库的使用方式可粗略分为两种,一是源码级别的使用,二是二进制级别使用。对于第一种,库的源码对于使用者完全开放,用户不仅可以使用,而且可以理解库的实现原理,甚至可以修改库来扩充功能,总之,源码之前,了无秘转载 2014-04-11 13:44:36 · 1679 阅读 · 0 评论 -
ado连接池遇到的问题
被折腾了一周,实在是找不到哪儿出错了,连接池的获取释放这些都是已经同步的,而且获取链接器也没有问题,但是多个线程同时访问数据库的时候,就会出现bug,有时是出现在EOF位置,有时是出现在GetCollect位置。然后查半天找不到问题,最后先不考虑连接池,给每个线程都分配一个链接器和数据集,这样应该没有关系了吧,但最后多个线程同时访问获取数据的时候还是一样会错误,很郁闷,实在是找不到问题原创 2017-07-06 16:02:20 · 284 阅读 · 0 评论 -
MFC使用ADO连接SQL Server
1.首先,要用#import语句来引用支持ADO的组件类型库(*.tlb),其中类型库可以作为可执行程序(DLL、EXE等)的一部分被定位在其自身程序中的附属资源里,如:被定位在msado15.dll的附属资源中,只需要直接用 #import引用它既可。可以直接在Stdafx.h文件中加入下面语句来实现:#import "c:/program files/common files/syst转载 2016-07-19 18:58:09 · 936 阅读 · 0 评论 -
VS2010编译后控件变暗淡及listcontrol的LVS_EX_DOUBLEBUFFER无效
最近在做mfc的listcontrol的大数据更新时出现闪烁,然后引发了一连串的问题。1. 首先解决闪烁的问题,百度了一下,网上全是你抄我的我抄你的,答案都是那5个方法,但自己试了都不行,无论用什么方法,因为没有对症下药,所以解决不了问题。 我是在vs2010下编辑的,但是在属性配置的字符集里面选择的按多字节而不是unicode,阿西吧,就是这个选择让自己崩溃了两天。 大数原创 2016-07-17 00:20:05 · 1510 阅读 · 4 评论 -
dll内存分配的理解
自己遇到的问题:在dll中new的指针返回给调用的线程,然后发现这个指针指向的是一堆乱七八糟的东西。怀疑:由于对dll的不了解,然后以为dll维护了自己的堆,返回的指针指向调用线程的堆时,指向的不是同一块空间,最后输出一堆乱七八糟的东西。查阅资料与个人理解:dll使用时会被进程(主线程或是其他线程)映射到进程空间,dll使用的栈属于调用它的那个线程。使用的堆要看它们的CRT原创 2016-06-28 15:58:42 · 1602 阅读 · 1 评论 -
编译的文件放在其他电脑上出现应用程序无法正常启动(0xc000007b)
相信有人肯定也像自己一样遇到这样的问题,新编译的程序在自己的电脑上运行没有问题,但是拷到其他的电脑上就不能运行,提示程序无法正常启动,首先想到的是百度看看别人的,但是发现网上的并不是自己想要的,我这个不是游戏软件,就自己编译的而已,所以网上的办法解决不了。看到这个错误大概知道是缺少什么文件,因为自己的电脑有编译软件,所以运行没有问题,但是拷贝到其他人电脑上就不行,很明显缺失文件,而原创 2016-05-27 17:57:06 · 4149 阅读 · 0 评论 -
Placement new、operator new、new operator
首先我们区分下几个容易混淆的关键词: new(也称作new operator)、operator new、placement new。看如下代码: 1: class MyClass {...}; 2: MyClass *p = new MyClass; 这里的new是上述三个关键字中的第一个,成为new操作符。实际上它执行如下3个转载 2016-03-04 11:08:26 · 277 阅读 · 0 评论 -
vs2010 CString转换char *
百度了半天,大家的介绍很多,但是发现不全面,一直解决不了问题,综合下自己的情况分享下自己的解决办法。 首先网上最常见的转换是这样的:CString str("Test");char *p=(LPSTR)(LPCTSTR)str;或者char *p=(char *)(LPCTSTR)str; 以上的方法不会报错,但是忽略了一个问题,那就是你的编译环境是怎样的,如果你原创 2015-07-23 22:00:31 · 1093 阅读 · 0 评论 -
MFC内部运行来龙去脉追踪
1.全局对象theApp先于WinMain函数构造,而theApp是一个派生类的对象,故先调用基类CWinApp的构造函数,再调用派生类对象的构造函数。 CWinApp的构造函数定义于APPCORE.CPP文件中 CWinApp::CWinApp(LPCTSTR lpszAppName){ if (lpszAppName != NULL) m_pszAppName =转载 2015-07-31 15:05:02 · 1213 阅读 · 0 评论 -
资源模块句柄的切换 .
产生这个问题的根源在于应用程序与MFC规则DLL共享MFC DLL(或MFC扩展DLL)的程序总是默认使用EXE的资源,我们必须进行资源模块句柄的切换,其实现方法有三: 方法一 在DLL接口函数中使用:AFX_MANAGE_STATE(AfxGetStaticModuleState());我们将DLL中的接口函数ShowDlg改为:void ShowDlg(void){转载 2015-07-30 16:23:37 · 548 阅读 · 0 评论 -
c/c++ mfc创建目录,获取运行目录
百度了半天,没找到实用的,看来还是得多写写。 c/c++与mfc不同,创建目录也不一样,刚开始还以为能通用,直接把c的代码拷过去发现用不了。FILE *fp = NULL;fp = fopen(“d:\\fuck", "rw");if(NULL == fp){ if(_mkdir(sFileName) == 0 ){ //return 1; }else{原创 2015-08-11 15:33:27 · 1481 阅读 · 0 评论 -
lib和dll文件的区别和联系
lib和dll文件的区别和联系什么是lib文件,lib和dll的关系如何 (2008-04-18 19:44:37) (1)lib是编译时需要的,dll是运行时需要的。 如果要完成源代码的编译,有lib就够了。 如果也使动态连接的程序运行起来,有dll就够了。 在开发和调试阶段,当然最好都有。 (2)一般的动态库程序有lib文件和dll文件。lib文件是必转载 2014-09-10 17:28:37 · 472 阅读 · 0 评论 -
恒生ufx接口转变成CTP接口
由于当初自己的程序是对接ctp接口,里面大量使用了ctp的东西,但最近又要对接恒生的系统,想着不改整个程序,把ufx接口封装成ctp的接口形式,这样上层的业务逻辑都不用改了。已实现的主要功能:ReqUserLoginReqOrderInsertReqOrderActionReqSettlementInfoConfirmReqQryOrderReq...原创 2018-03-12 16:13:43 · 5182 阅读 · 2 评论