摘要: 1. 创建Android ProjectFile -> New -> Android Application Project2. 定义调用C函数的java类,并生成(Eclipse中是自动编译的)。Java代码:package lw.example.hellondk;public class HelloJni { public native String getStringFromJni(); public static native String getStringFromJniStatic(); static { System.loadLibrary("HelloNd 阅读全文
posted @ 2014-01-22 23:12 -lw- 阅读(1187) 评论(1) 推荐(0) 编辑
摘要: osgViewer的析构函数中会调用GraphicsContext::close();GraphicsContext::close()中会 释放分配的显示列表;而osgViewer的基类中osg::View的析构函数中才会删除Camera节点,这样就造成一些显示列表没有被释放的问题。osg中删除显示列表时,并不真正删除,而是缓存起来,下次再分配时,会根据显示列表的大小重新使用。osg中会为GraphicsContext分配一个ID,这个ID在GraphicsContext删除会,下次创建的GraphicsContext会再次使用。osg::Drawable 会记录GraphicsContext 阅读全文
posted @ 2013-10-25 21:47 -lw- 阅读(617) 评论(0) 推荐(0) 编辑
摘要: 用vc2008动态编译(/MD,/MDd)的程序,在进行发布或者部署时,经常会因为目标机器上没有相应的dll库版本而引发“应用程序配置不正确,程 序无法启动”问题。而解决方法也不是将vc安装目录下对应的dll库拷贝到程序路径下这么简单,其中涉及到的一些细节还是够大家研究一番的。 首先我们需要很清楚地了解side-by-side、manifest文件等这些概念,可以参考我博客的文章 详解“由于应用程序配置不正确,应用程序未能启动”。 知道问题产生的原由,我们就明确了解决vc2008程序发布问题的目标:将程序真正链接的dll库文件和程序一起打包,并保证程序的manifest配置 能够正确链接到这. 阅读全文
posted @ 2013-04-11 22:21 -lw- 阅读(729) 评论(0) 推荐(0) 编辑
摘要: VC2012已经支持final关键字了,fianl关键字可以用于以下两种情况:1. 一个类或结构体比希望被继承。class Base final{};// 错误,Derive不能从Base派生。class Derive : public Base{};2. 一个虚函数不希望被override。class Base{public: virtual void Fun() final {}};class Derive : public Base{public: // 错误,不能覆盖基类的函数。 virtual voi... 阅读全文
posted @ 2012-10-17 22:32 -lw- 阅读(16636) 评论(0) 推荐(1) 编辑
摘要: 一,单一职责原则(SRP): 1,SRP(Single Responsibilities Principle)的定义:就一个类而言,应该仅有一个引起它变化的原因。简而言之,就是功能要单一。 2,如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其它职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。(敏捷软件开发) 3,软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离。(敏捷软件开发)二,开放-封闭原则(OCP): 1,OCP(Open-Close Principle)的定义:就是说软件实体(类,方法... 阅读全文
posted @ 2012-09-24 22:21 -lw- 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 如果线程中需要使用C、C++库函数,创建线程时,不要使用CreateThread()创建线程,而应该使用_beginthreadex()。因为c、c++的一些库函数会访问一些全局变量,_begintheradex()给每个线程一份全局变量或进行加锁处理,而CreateThread()则不会。 阅读全文
posted @ 2012-09-17 21:38 -lw- 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 派生类覆盖了基类中的同名虚函数,如果基类中的对应虚函数声明修改,在编译是不会提示派生类有错误,而如果派生类的函数在声明的时候使用了override,那么编译时就会提示错误了。例如: 1 class A 2 { 3 public: 4 virtual void VFun(); 5 }; 6 7 class B 8 : public A 9 {10 public:11 virtual void VFun() override;12 };当A::VFun()修改为virtual void VFun(int x)时,B就会编译不通过。 阅读全文
posted @ 2012-09-05 22:31 -lw- 阅读(469) 评论(0) 推荐(0) 编辑