摘要: 最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误:(.text+0x13):undefinedreferenceto`func'关于undefined reference这样的问题,大家其实经常会遇到,在此,我以详细地示例给出常见错误的各种原因以及解决方法,希望对初学者有所帮助。1.链接时缺失了相关目标文件(.o)测试代码如下:然后编译。gcc-ctest.c gcc–cmain.c得到两个 .o 文件,一个是 main.o,一个是 test.o ,然后我们链接 .o 得到可执行程序:gcc-omainmain.o这时,你会发现,报错了: 阅读全文
posted @ 2012-08-17 23:53 CN.SnailRun 阅读(423) 评论(0) 推荐(0) 编辑
摘要: 一、托盘简介所谓的“托盘”,在Windows系统界面中,指的就是下面任务条右侧,有系统时间等等的标志的那一部分。在程序最小化或挂起时,但有不希望占据任务栏的时候,就可以把程序放到托盘区。二、托盘编程相关函数把程序放到托盘上的本质就是先在托盘区绘制一个图标,然后把程序隐藏不见,再对托盘的图标进行消息处理,就可以了。绘制图标以及确定图标所传送消息的函数只有一个:WINSHELLAPI BOOL WINAPI Shell_NotifyIcon(DWORD dwMessage,PNOTIFYICONDATA pnid);这个函数,负责向系统传递消息,以添加、修改或删除托盘区的图标。参数dwMessag 阅读全文
posted @ 2012-08-17 23:52 CN.SnailRun 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 目录目录概要1. Example1.1 Unsafe access to control1.2 What’s mean?2. The first choice : CheckForIllegalCrossThreadCalls3. The second choice参考概要Windows Forms 控件通常不是thread-safe(直接或间接继承于System.Windows.Forms.Control),因此.NET Framework为防止multithread下对控件的存取可能导致控件状态的不一致,在调试时,CLR-Debugger会抛出一个 InvalidOperationExce 阅读全文
posted @ 2012-08-17 23:52 CN.SnailRun 阅读(752) 评论(0) 推荐(0) 编辑
摘要: 清华大学杜志辉讲授的《网格计算》课程。清华大学出版社出版的《网格计算》一书,杜志辉等编著。Unit1网格基础@广义定义:“网格”就是一个集成的计算与资源环境,或者说是一个计算资源池。“网格计算”是基于网格问题的求解。狭义定义:网格资源主要指分布的计算机资源。“网格计算”是指将分布的计算机组织起来协同解决复杂的科学与工程计算问题。@随着计算机的发展和网上资源的不断扩大化,网格要具有超大规模的计算和数据分析能力。机器的发展趋势:大型机——>小型机——>微机——>机群。@网格的应用领域:一、科学计算领域分布式超级计算;高吞吐率计算;数据密集型计算……二、社会经济生活领域基于广泛信息 阅读全文
posted @ 2012-08-17 23:51 CN.SnailRun 阅读(2050) 评论(0) 推荐(0) 编辑
摘要: (网上有很多这方面的资料,但是大多数均不成功,这是唯一一个我做成的步骤。)可能是本人资质笨拙,显卡驱动安装了一个星期才成功。网上资料参考了不少,唯一觉得有用的参考:http://apps.hi.baidu.com/share/detail/34941860以本人Nvidia 8400 gs 显卡为例,步骤如下:一,准备工作。其实安装方法都是大同小异,开始失败多次根本原因就是预先安装包没装全。开始安装如下包:yum install gccyum install kernelyum install dkmsyum install kernel-develyum install kernel-hea 阅读全文
posted @ 2012-08-17 23:51 CN.SnailRun 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 摘要:Windows编程和Dos编程,一个很大的区别就是,Windows编程是事件驱动,消息传递的。所以,要学好Windows编程,必须对消息机制有一个清楚的认识,本文希望能够对消息的传递做一个全面的分析。一、什么是消息?消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉。一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向Windows发出一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个消息给应用程序。消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。例如,对于单击 阅读全文
posted @ 2012-08-17 23:50 CN.SnailRun 阅读(336) 评论(0) 推荐(0) 编辑
摘要: 一、DLL的不同类型使用MFC可以生成两种类型的DLL:MFC扩展DLL和常规DLL。常规DLL有可以分为动态连接和静态连接。Visual C++还可以生成WIN32 DLL,但不是这里讨论的主要对象。1、MFC扩展DLL每个DLL都有某种类型的接口:变量、指针、函数、客户程序访问的类。它们的作用是让客户程序使用DLL,MFC扩展DLL可以有C++的接口。也就是它可以导出C++类给客户端。导出的函数可以使用C++/MFC数据类型做参数或返回值,导出一个类时客户端能创建类对象或者派生这个类。同时,在DLL中也可以使用DLL和MFC。Visual C++使用的MFC类库也是保存在一个DLL中,MF 阅读全文
posted @ 2012-08-17 23:49 CN.SnailRun 阅读(647) 评论(0) 推荐(0) 编辑
摘要: 4.1.Net平台AOP技术概览.Net平台与Java平台相比,由于它至今在服务端仍不具备与unix系统的兼容性,也不具备类似于Java平台下J2EE这样的企业级容器,使得.Net平台在大型的企业级应用上,常常为人所诟病。就目前而言,.Net平台并没有提供AOP技术的直接实现,而微软在未来对于.Net的发展战略目标,我们仍未可知。但我相信微软对于目前炙手可热的AOP技术应该不会视而不见。也许在未来的.Net平台下,会出现类似于Spring那样的轻量级IoC容器,加上O/R Mapping的进一步实现与完善,随着Windows Server操作系统的逐步推新,.Net平台对于企业级系统开发的支持 阅读全文
posted @ 2012-08-17 23:48 CN.SnailRun 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 3.1 Java平台AOP技术概览3.1.1 AOP技术在Java平台中的应用AOP在实验室应用和商业应用上,Java平台始终走在前面。从最初也是目前最成熟的AOP工具——AspectJ,到目前已经融和在企业级容器JBoss中的JBoss AOP,均建立在Java平台上。前面已经描述到,AOP的目的就是将核心关注点和横切关注点分离,实际上这就是一种分散关注(seperation of concerns)的思路。在Java平台下,如果要开发企业级的应用,非J2EE莫属。一个J2EE应用系统只有部署在J2EE容器中才能运行,那么为什么要划分为J2EE容器和J2EE应用系统? 通过对J2EE容器运行 阅读全文
posted @ 2012-08-17 23:47 CN.SnailRun 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 2.1 AOP技术起源AOP技术的诞生并不算晚,早在1990年开始,来自Xerox Palo Alto Research Lab(即PARC)的研究人员就对面向对象思想的局限性进行了分析。他们研究出了一种新的编程思想,借助这一思想或许可以通过减少代码重复模块从而帮助开发人员提高工作效率。随着研究的逐渐深入,AOP也逐渐发展成一套完整的程序设计思想,各种应用AOP的技术也应运而生。AOP技术在Java平台下是最先得到应用的。就在PARC对于面向方面编程进行研究的同时,美国Northeastern University的博士生Cristina Lopes和其同事也开始了类似的思考。最终,美国国防先 阅读全文
posted @ 2012-08-17 23:45 CN.SnailRun 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 本文转载自:http://wayfarer.cnblogs.com/articles/241012.html软件设计因为引入面向对象思想而逐渐变得丰富起来。“一切皆为对象”的精义,使得程序世界所要处理的逻辑简化,开发者可以用一组对象以及这些对象之间的关系将软件系统形象地表示出来。而从对象的定义,进而到模块,到组件的定义,利用面向对象思想的封装、继承、多态的思想,使得软件系统开发可以向搭建房屋那样,循序渐进,从砖石到楼层,进而到整幢大厦的建成。应用面向对象思想,在设计规模更大、逻辑更复杂的系统时,开发周期反而能变的更短。自然其中,需要应用到软件工程的开发定义、流程的过程控制,乃至于质量的缺陷管理 阅读全文
posted @ 2012-08-17 23:44 CN.SnailRun 阅读(119) 评论(0) 推荐(0) 编辑
摘要: $gcc -c hello.c -o hello.o1.连接成静态库连接成静态库使用ar命令,其实ar是archive的意思$ar cqs libhello.a hello.o2.连接成动态库生成动态库用gcc来完成,由于可能存在多个版本,因此通常指定版本号:$gcc -shared -Wl,-soname,libhello.so.1 -o libhello.so.1.0 hello.o另外再建立两个符号连接:$ln -s libhello.so.1.0 libhello.so.1$ln -s libhello.so.1 libhello.so这样一个libhello的动态连接库就生成了。最重 阅读全文
posted @ 2012-08-17 23:43 CN.SnailRun 阅读(399) 评论(0) 推荐(0) 编辑
摘要: 静态库在linux环境中, 使用ar命令创建静态库文件.如下是命令的选项:d -----从指定的静态库文件中删除文件m -----把文件移动到指定的静态库文件中p -----把静态库文件中指定的文件输出到标准输出q -----快速地把文件追加到静态库文件中r -----把文件插入到静态库文件中t -----显示静态库文件中文件的列表x -----从静态库文件中提取文件还有多个修饰符修改以上基本选项,详细请man ar 以下列出三个:a -----把新的目标文件(*.o)添加到静态库文件中现有文件之后b -----***************************************之前 阅读全文
posted @ 2012-08-17 23:43 CN.SnailRun 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 1)SQL的指令格式所有的SQL指令都是以分号(;)结尾的。如果遇到两个减号(--)则代表注解,sqlite3会略过去。2)建立资料表假设我们要建一个名叫film的资料表,只要键入以下指令就可以了:create table film(title, length, year, starring);这样我们就建立了一个名叫film的资料表,里面有name、length、year、starring四个字段。这个create table指令的语法为:create table table_name(field1, field2, field3, ...);table_name是资料表的名称,fieldx 阅读全文
posted @ 2012-08-17 23:42 CN.SnailRun 阅读(339) 评论(0) 推荐(0) 编辑
摘要: 安装Ubuntu Apache下面,我们首先介绍如何安装Ubuntu Apache。具体安装命令如下所示: $ sudo apt-get install apache2然后运行Ubuntu Apache,命令如下所示: $ sudo /etc/init.d/apache2 restartApache在安装期间将会新建一个目录:/var/www,该目录是该服务器中存放文档的根目录。只要在浏览器的地址栏输入http://localhost/或机器的IP地址就能访问放置在此目录中的所有文档。 安装PHP PHP是一种流行的服务器端脚本语言,一般与MySQL或 Postgres结合起来用于管理... 阅读全文
posted @ 2012-08-17 23:42 CN.SnailRun 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 串口设备无论是在工控领域,还是在嵌入式设备领域,应用都非常广泛。而串口编程也就显得必不可少。偶然的一次机会,需要使用串口,而且操作系统还要求是Linux,因此,趁着这次机会,综合别人的代码,进行了一次整理和封装。具体的封装格式为C代码,这样做是为了很好的移植性,使它可以在C和C++环境下,都可以编译和使用。代码的头文件如下://///////////////////////////////////////////////////////////////////////////////filename:stty.h#ifndef __STTY_H__#define __STTY_H__#incl 阅读全文
posted @ 2012-08-17 23:41 CN.SnailRun 阅读(764) 评论(0) 推荐(0) 编辑
摘要: #include <winsock2.h>#include <Iphlpapi.h>#include <stdio.h>void byte2Hex(unsigned char bData,unsigned char hex[]){inthigh=bData/16,low =bData ;hex[0]= (high <10)?('0'+high):('A'+high-10);hex[1]= (low <10)?('0'+low):('A'+low-10);}int getLocalMa 阅读全文
posted @ 2012-08-17 23:40 CN.SnailRun 阅读(509) 评论(0) 推荐(0) 编辑
摘要: 最近想学一下Qt,下载qt-sdk-win-opensource-2010.05.exe编译里面的例子,居然莫名其妙的有很多错误,对我这样的小白来说,看得眼都花了。神马 redeclaration of C++ built-in type 'wchar_h', 之类的。无奈,求助于百度谷歌。可以如下解决:如果你以前安装过visual studio 2008之类的软件,那么装上Qt Creator 后,编译运行其自带的演示程序时就可能出现如上图错误,几十个警告的问题。点击Qt Creator界面左侧的projects图标,查看工程信息。这里我们主要查看编辑环境Buid Envir 阅读全文
posted @ 2012-08-17 23:39 CN.SnailRun 阅读(679) 评论(0) 推荐(0) 编辑
摘要: VC++调程序出现如下错误:DebugAssertionFailed!Program:D:\wyuStud\debug\wyuStud.exeFile:afx.inlLine:157可能问题:1.野指针;2.内存泄露解决方法:1.看一看你的程序里是不是有ASSERT()或VERIFY()语句。这两个宏是用来测试它的参数是否为真的。出现你说的,这说明你的指针或表达试有问题2.File:afx.inlLine:157打开看看就知道了3.vc++中遇到过此问题,在release下回忽略此问题,其实就是野指针的问题,在release版本下不用关心这个问题,也就是系统帮你给屏蔽了,但是问题还是存在的,真 阅读全文
posted @ 2012-08-17 23:38 CN.SnailRun 阅读(291) 评论(0) 推荐(0) 编辑
摘要: Linux的grub是一个非常好的引导程序,它可以引导多操作系统。当windows和linux共存时有时候我们想删除 grub,重新启用单一的windows该如何操作呢,本文会给答案的。由于windows 2000、windows XP、windows 2003的启动机制与vista 的启动管理器有明显的差别,所以本文分两部分来说:一:删除grub,恢复windows 2000、windows XP、windows 2003原来的引导mbr方法一:使用其它dos命令(以XP为例)前提是您的系统的引导分区是在fat格式下,对于ntfs不起作用,因为dos命令不识别nfts的文件系统。用带启动盘功 阅读全文
posted @ 2012-08-17 23:37 CN.SnailRun 阅读(954) 评论(1) 推荐(0) 编辑