
c++开发
文章平均质量分 92
kele37526
自己自知
展开
-
关于命名空间的简要用法
:关于命名空间的使用。 a:从动态库中输出命名空间的函数:在该命名空间的函数声明前加上输出标识:_declspec(dllexport) 即可。使用时同在一个工程中使用方法 b:命名空间的名称是唯一的,其声明和实现可以在两个文件中分别编写: ex: 在a.h中声明 namespace test { int f(); .... } 在a.cpp中实原创 2008-12-19 15:25:00 · 406 阅读 · 0 评论 -
关于 CSharp 调用 C++ dll
由于c#和Cli的执行码可以通过反汇编得到源码(只是听说,没有实际操练)。对于一些不想公开的代码,可以用c++编写再由 C#。从网上找到了几个方法1:c#->c++2:c#->cli->c++具体描述参见:http://www.cppblog.com/mzty/archive/2008/03/12/44280.html个人认为 方法1:过于繁琐,在C#工程中还要对输出函数进行再声明,更重要的是 在调试时经常会警告堆栈不匹配造成冲突(很烦)相比较方法2虽然还有增加cli工程,但思路比较清楚,简单我推荐。不过要原创 2011-05-12 08:58:00 · 1362 阅读 · 0 评论 -
GooglTest GoogleMock 实践感想一
最近开发新项目,负责数据模型的开发。有机会从零开始编码,趁机将一直以来关注但没有实践的googletest实践一把。下面将一些感受记录如下,也是个积累。一:环境搭建版本:下载googletest的最新版本 1.60.用Vs2010进行编译。boost_1.49注:之前的1.5在vs2010下编译有问题。环境变量: GMOCK_DIR =D:\gmock-1.原创 2012-04-05 16:54:31 · 1142 阅读 · 1 评论 -
GooglTest GoogleMock 实践感想三 死亡测试初步(2)
关于googletest的死亡测试的问题:当被测函数在动态库中并有assert()断言,运行对应的测试用例时弹出警告对话框,每次都要认为的选择是否继续执行。当这种情况很多时,就很繁琐了。 帮助中说设置运行标识 testing::GTEST_FLAG(catch_exceptions) =0 ;可以忽略异常捕获。但对于assert() 属于被测的动态库时,始终弹出原创 2012-04-25 10:29:39 · 1140 阅读 · 0 评论 -
boost serialize 的小问题 宏不起作用
最近使用boost进行开发,感到很不错。今后还要陆续将自己的感想记下在使用boost 的序列化时。当序列话派生类时遇到问题。总是提示 ”unregist class“ ,但明明在类声明,定义文件中添加了相关的宏...h#include ///发布以后,后面的字符串就不能改了,否则就无法读取旧版本文件BOOST_CLASS_EXPORT_KEY2(clas原创 2012-09-11 09:33:55 · 785 阅读 · 0 评论 -
Boost 的事件管理架構:Signal / Slot
Boost 的事件管理架構:Signal / Slot分类: window编程 Linux编程2012-01-09 17:40 64人阅读 评论(0) 收藏 举报 Boost 的事件管理架構:Signal / Slot(上)这篇文章写的很好,但国内需要翻墙才能看到,故转载至此,方便大家转载:http://kheresy.wordpress.com/2011/转载 2012-03-19 21:55:42 · 1090 阅读 · 0 评论 -
c++ rvalue 的在派生类中的使用,注意事项
用c++11的新增rvalue 进行拷贝构造 ,赋值函数重载 。但在执行时却调用左值拷贝构造,赋值函数最终发现是在拷贝构造,赋值函数中调用基类的对应的右值拷贝构造,赋值函数有误。现记录更正如下class a{a(const&rhs){}{}a& operator=(const a&& rhs){}};class原创 2012-09-11 14:58:11 · 299 阅读 · 0 评论 -
GooglTest GoogleMock 实践感想三
googletest 过滤器失效:通过在int _tmain(int argc, _TCHAR* argv[])中设置 testing::GTEST_FLAG(filter) = "testsuit.*";后再注销 该过滤器,执行全部的测试suit时,显示仍旧执行根据以上过滤器的用例。将工程的×.vcxproj.user删除后 运行正常原创 2012-09-11 15:05:20 · 689 阅读 · 0 评论 -
boost 文件映射
boost 的文件映射的使用非常简单两个类就搞定了。file_mapping mapped_region但当映射的region和文件大小一样时,当文件大于1g时 产生异常,此时只能分段映射文件才能避免以上问题。region的粒度由获得 std::size_t page_size = mapped_region::get_page_size();2:向region中写入数据,原创 2012-09-11 09:44:04 · 902 阅读 · 0 评论 -
c++ vector 如何释放内存
1:1. vector容器的内存自增长 与其他容器不同,其内存空间只会增长,不会减小。先来看看"C++ Primer"中怎么说:为了支持快速的随机访问,vector容器的元素以连续方式存放,每一个元素都紧挨着前一个元素存储。设想一下,当vector添加一个元素时,为了满足连续存放这个特性,都需要重新分配空间、拷贝元素、撤销旧空间,这样性能难以接受。因此STL实现者在对vec转载 2013-10-30 16:12:29 · 3106 阅读 · 3 评论 -
ON_COMMAND_RANGE宏和ON_COMMAND 使用的注意点
VC++中的ON_COMMAND_RANGE宏(附例子) 转贴+补充转自:http://www.cnblogs.com/wqj1212/articles/1089066.htmlVC++中的ON_COMMAND_RANGE宏和ON_COMMAND等宏一样,是用来声明消息处理函数的,与ON_COMMAND不同的是,此宏可用来定义一组消息的处理函数。两个宏的用法是:ON_COMMAND(id,memberFxn)ON_COMMAND_RANGE(id1,id2,memberFxn)看起来其中memberFxn似转载 2010-06-25 15:08:00 · 742 阅读 · 0 评论 -
应用程序运行 Error 1706 错误
问题:2009-11-27前天,在启动用用程序的时候,弹出对话框,提示: “The feature you are trying to use is on a network resource that is unavailable”以及提示:"Click OK to try again, or enter an alternate path t原创 2009-11-27 16:07:00 · 2314 阅读 · 0 评论 -
掌握文本文件读写的方法
了解二进制文件的读写方法C++文件流:fstream // 文件流ifstream // 输入文件流ofstream // 输出文件流//创建一个文本文件并写入信息//同向屏幕上输出信息一样将信息输出至文件#include#includevoid main(){ ofstream f1("d://me.txt"); //打开文件用于写,若文件不存在就创建它 if(转载 2009-10-29 15:22:00 · 1149 阅读 · 0 评论 -
屏蔽、修改ToolBar的右键菜单
缺省的CToolBar的在浮动的状态下,右键菜单(contex)显示。 在英文版的软件按装在中文哦系统下,显示的是中文菜单。或者想去掉该右键菜单。方法如下 重载 ONLBUTTONCLICK and ONLBUTONDBCLICK void CWapTooBar::OnLButtonDblClk(UINT nFlags, CPoint point) {//父原创 2009-07-20 14:15:00 · 653 阅读 · 0 评论 -
选择文件夹Dialog
1、选择文件夹 在实际的MFC编程当中,常常需要弹出对话框选择文件、选择目录等操作,对于选择文件,用CFileDialog就可以很简单的解决,而对于选择目录,则稍稍需要多一些步骤,需要自己创建Dialog。 首先创建如下的对话框,并为它创建类Dialog,在Dialog头文件中添加保存目录名的变量CString m_strPath,然后为编辑框右边的按钮添加消息响应函数O转载 2009-07-22 08:21:00 · 410 阅读 · 0 评论 -
当动态库不能加载时的判别方法
当动态库不能加载时的判别方法:有的时候由于新添辅助动态库,动态库不匹配等原因造成不能加载指定的动态库 Loadibrary("dddddd.lib") 返回值为0,并且应用程序也不返回相关的提示信息。现解决方法如下: 在主执行程序的设置->link属性页中的lib项中写上要加载的动态库对应的lib名称。 全编译主程序,执行,将显示对话框提示不能加载的动态库所需要的底层动态库不原创 2009-07-30 10:54:00 · 655 阅读 · 0 评论 -
互斥量的使用感受
在多进程通讯中。使用比较多的是互斥量。关于互斥量的介绍在网上有很多的资料这里就不多说。这里只是谈谈在使用互斥量中的遇到的几个问题。当多个进程对同一个硬件访问操作时要使用互斥量进行锁定。笔者用的是某据说是很好的软件狗进行开发。1:使用CSingleLock时很方便,当发现在查询硬件的时候 如下的使用时:mm为互斥量 int num =0;CSingleLock singl原创 2009-06-01 14:40:00 · 521 阅读 · 1 评论 -
判断文件的状态
CFile::GetStatus( LPCTSTR lpszFileName, CFileStatus& rStatus ); 、得到文件的状态信息,对判断文件的状态非常有用。详见MFC的说明。原创 2009-07-10 16:57:00 · 301 阅读 · 0 评论 -
多进程访问一个硬件的死锁问题,正在排除。
遇到一个两个进程同时访问一个软件狗,产生死锁。正在排除......有了结果后再补充。原创 2009-09-23 10:22:00 · 361 阅读 · 0 评论 -
解决前一个进程死锁问题
遇到一个两个进程同时访问一个软件狗,产生死锁。具体场景如下:两个进程(A,B)都产生一个后台线程对软件狗进行管理,并且使用的是同一个接口类的不同对象,该接口类的建立采用了singlton模式。1:一个进程启动后,对软件锁进行扫描,判断其可用性,记录其句柄,并打开。2:启动另一个进程,同样对软件锁进行扫描,判断其可用性,并记录句柄,并打开。3:第二个进程不能启动。一直处于停滞状态。原创 2009-10-12 16:24:00 · 932 阅读 · 0 评论 -
如何读写WINDOWS2000的日志
以前写了一个关于如何读写WINDOWS2000的日志的小应用程序,通过vc知识库查到相关信息。今天突然想起,赶快记录下来,以便作为一个资料积攒。全文如下。 如何读写WINDOWS2000的日志作者:king_koo下载本文示例工程一些大型应用程序会把他们的一些事件写到日志里面去,比如sql server,norton,iis等.我google了一下,网上关于这方转载 2009-10-14 09:19:00 · 538 阅读 · 0 评论 -
关于动态库接口的参数传递问题
这两天要在主控程序中C添加一个接口以便调用动态库A中的对应函数 A中接口原型原型为(示例隐去实际名称)BOOL OpenViewA(CString strPro1,CString strPro2,CString strPro3){。。。return TURE;}由于C中原先有类似的接口OpenViewCC就将其拷贝一份,改改名字。其原始原型为原创 2009-10-21 09:14:00 · 928 阅读 · 0 评论 -
利用Qwaitcondition 控制生产消费者协作
通过分析以下的例子发现:多线程协作/同步的关键是:如何有效的设计并利用好多个线程之间公共操作的对象,以及相关的变量。如下 :如果每个线程不共用一个numUsedBytes来标识buff的元素索引的话将会大大的增加消费者和生产者的协作难度。及利用numUsedBytes来如何控制好 buffer[i % BufferSize] 不会取到生产者还没有向buff中写入的元素#incl原创 2013-12-18 16:38:01 · 703 阅读 · 0 评论