搜档网
当前位置:搜档网 › WindML媒体库编译

WindML媒体库编译

WindML媒体库编译
WindML媒体库编译

WindML媒体库创建(此文档以创建图形显示为例)

1. 在以目录components\windml-5.1\src\ugl\driver\graphics下创建文件夹atmel,复制选好的示例到该文件夹下,修改文件夹名称,Makefile下配置文件,代码.

2. 创建Vxworks 6.6 Downloadable Kernel Module Project

(a). 菜单栏选择FILE →NEW →Vxworks Downloadable Kernel Module Project

(b). 完成以上步骤,弹出对话框

填入工程名,选择Create project in workspace,再选择NEXT

(c). 按照默认设置不需要勾选一直下一步,直到以下对话框

Active build spec选择ARMARCH5gnu(此处以芯片Sam9G45为例故选择ARMARCH5gnu),然后选择NEXT一直到Finish.

3.创建Middleware Component

(a). 菜单栏选择File →New →Middleware Component

(b). 完成以上步骤弹出以下对话框

Select the parent project:选择你上面建立的DKM工程选择Next.

(c). Component选择Media Library 5.1,单击Next

(d). Templates选择Media Library Configuration,点击Finish.

(e). 创建完成之后右边窗口弹出config.windml文件.如下:

在上单击鼠标右键New Sibling Display(Display创建的是显示设备)如下图:

输入Display Name,鼠标右键单击选择New Child Graphics(这里创建的是图形库)弹出以下窗体

选择好Device, Instance, Graphic Mode, Output Type等选项之后右键单击你创建的Vxworks 6.6 Downloadable Kernel Module Project工程,选择Build Project,至此就完成了媒体库的创建.

注:如果Graphics设备创建完成之后Device, Instance, Graphic Mode, Output Type无选择项是因为配置文件未配置

1.windml-5.1\config\makefiles文件夹下创建文件添加你创建的媒体库设

备目录

2.windml-5.1\config\wrmdb文件夹下创建文件,按照其他例

子填入创建设备信息

具体详细资料请参阅docs\extensions\eclipse\plugins\com.windriver.ide.doc.wr_media_lib目录下的文件夹下的pdf文档.

多媒体数据库管理系统

目录 引言 (1) 1多媒体数据库管理系统 (1) 2系统设计 (2) 2.1用户合法性的实现 (2) 2.2多媒体数据的管理 (3) 3结束语 (6) 参考文献 (6) Introduction (8) 1Multimedia database management system (8) 2System design (8) 2.1user legality realize (9) 2.2multimedia data management (10) 3The ending (12) Reference (13)

多媒体数据库管理系统 摘要:多媒体数据库管理系统是针对多媒体数据的有效管理而提出的一个数据库管理系统,跟一些传统的数据库管理系统相比,多媒体数据不同于传统数据,是一种非格式化数据,具有对象复杂、存储分散及时空同步等特点。为方便管理,本系统采用面向对象方法进行设计与开发。通过引入封装、继承、对象和类等概念,可以有效地描述各种对象及其内部结构与联系,提高对非格式化多媒体数据的管理能力。 关键词:多媒体;数据库管理系统;面向对象 引言 随着现代信息技术的迅猛发展,如今的信息已不仅仅包含数值和文本等简单的媒体类型,而且有图像、图形、声音、视频及动画等多种媒体,并且未来将会出现更多的媒体类型。多媒体由于其本身的综合性和结构的复杂性等,对它的管理和操纵都十分困难。而现有的关系型数据库对多媒体数据的管理和操作能力十分有限,尽管多媒体技术得到了很大的进步,但开发集图像、声音、文字等多媒体信息于一体的数据库管理系统,仍是近阶段数据库的一个发展方向。 由于现有的关系型数据库对多媒体数据的管理和操作能力十分有限,其对多媒体数据操纵的效果也差强人意。一些基于某一特定应用领域的多媒体数据库系统已取得了成功的经验,比如各种各样的地理信息系统,实现了对点、线、面等数据的管理;还有指纹数据库,头像数据库等。但是,到现在为止尚未建立一个通用的多媒体数据库管理系统。 1多媒体数据库管理系统 作为一个多媒体数据库管理系统,本系统具备了管理文本、声音、图像和视频等多媒体数据的功能,同时有效地将数据库中各种媒体记录与其对应的文件一一对应了起来。本系统具有以下主要功能: (1)多媒体数据的基本操作,如查询、添加、删除和播放等。 (2)多媒体数据类型定制,可以添加新的数据类型。

静态链接库lib和动态链接库dll区别

1.什么是静态连接库,什么是动态链接库 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最终生成的EXE 文件中了。但是若使用DLL,该DLL 不必被包含在最终EXE 文件中,EXE 文件执行时可以“动态”地引用和卸载这个与EXE 独立的DLL 文件。静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。静态链接库与静态链接库调用规则总体比较如下。 对于静态链接库(比较简单): 首先,静态链接库的使用需要库的开发者提供生成库的.h头文件和.lib文件。 生成库的.h头文件中的声明格式如下: extern "C" 函数返回类型函数名(参数表); 在调用程序的.cpp源代码文件中如下: #include "..\lib.h" #pragma comment(lib,"..\\debug\\libTest.lib") //指定与静态库一起链接 第二,因为静态链接库是将全部指令都包含入调用程序生成的EXE文件中。因此如果用的是静态链接库,那么也就不存在“导出某个函数提供给用户使用”的情况,要想用就得全要!要不就都别要!:) 对于动态链接库: 动态链接库的使用,根据不同的调用方法,需要提供不同的资源: 1. 静态加载------程序静态编译的时候就静态导入dll,这样的话就需要提供给库 使用者(C客户)如下文件:*.lib文件和.dll文件和*.h。其有2个坏处: 1 程序一开始运行就需要载入整个dll,无法载入程序就不能开始运行; 2 由于载入的是整个dll,需要耗费资源较多 其调用方法如下: #include "..\lib.h" #pragma comment(lib,"..\\debug\\libTest.lib") 但是这种方式的话可以调用Class method. 2.动态加载-----那么只需要提供dll文件。 因此调用程序若想调用DLL中的某个函数就要以某种形式或方式指明它到底想调用哪一个函数。但是无法调用Class method了。 如果要调用Dll中的function,需要经历3个步骤: Handle h=LoadLibrary(dllName) --> GetProcAddress(h,functionName) 返回函数指针,通过函指针调用其function-->FreeLibrary(h) 例如:Another.dll有一个int Add(int x,int y)函数。则完整的调用过程如下:

GCC编译动态和静态链接库

我们通常把一些公用函数制作成函数库,供其它程序使用。函数库分为静态库和动态库两种。静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。本文主要通过举例来说明在Linux中如何创建静态库和动态库,以及使用它们。 在创建函数库前,我们先来准备举例用的源程序,并将函数库的源程序编译成.o文件。 第1步:编辑得到举例的程序--hello.h、hello.c和main.c; hello.c(见程序2)是函数库的源程序,其中包含公用函数hello,该函数将在屏幕上输出"Hello XXX!"。hello.h(见程序1)为该函数库的头文件。main.c(见程序3)为测试库文件的主程序,在主程序中调用了公用函数hello。 1.#ifndef HELLO_H 2.#define HELLO_H 3. 4.void hello(const char *name); 5. 6.#endif //HELLO_H 复制代码 程序1: hello.h 1.#include 2. 3.void hello(const char *name) 4.{ 5.printf("Hello %s!\n", name); 6.} 复制代码 程序2: hello.c 1.#include "hello.h" 2. 3.int main() 4.{ 5.hello("everyone"); 6.return 0; 7.} 复制代码 程序3: main.c

第2步:将hello.c编译成.o文件; 无论静态库,还是动态库,都是由.o文件创建的。因此,我们必须将源程序hello.c通过g cc先编译成.o文件。 在系统提示符下键入以下命令得到hello.o文件。 # gcc -c hello.c # 我们运行ls命令看看是否生存了hello.o文件。 # ls hello.c hello.h hello.o main.c # 在ls命令结果中,我们看到了hello.o文件,本步操作完成。 下面我们先来看看如何创建静态库,以及使用它。 第3步:由.o文件创建静态库; 静态库文件名的命名规范是以lib为前缀,紧接着跟静态库名,扩展名为.a。例如:我们将创建的静态库名为myhello,则静态库文件名就是libmyhello.a。在创建和使用静态库时,需要注意这点。创建静态库用ar命令。 在系统提示符下键入以下命令将创建静态库文件libmyhello.a。 # ar crv libmyhello.a hello.o # 我们同样运行ls命令查看结果: # ls hello.c hello.h hello.o libmyhello.a main.c # ls命令结果中有libmyhello.a。 第4步:在程序中使用静态库; 静态库制作完了,如何使用它内部的函数呢?只需要在使用到这些公用函数的源程序中包含这些公用函数的原型声明,然后在用gcc命令生成目标文件时指明静态库名,gcc将会从静态库中将公用函数连接到目标文件中。注意,gcc会在静态库名前加上前缀lib,然后追加

浅谈多媒体数据库管理系统及应用

浅谈多媒体数据库管理系统及应用 莫 雪 (新华通讯社广西分社,广西南宁 530022) 摘 要:本文通过介绍多媒体数据、多媒体数据库的概念,分析了多媒体数据库的三大数据模型的特点、区别和应用范围;在此基础上,引出多媒体数据库管理系统(MMDBMS)的定义、多种查询方式和体系结构设计。最后,介绍了新华通讯社多媒体数据库的管理与应用。 关键词:多媒体数据库;MMDBMS;查询方式;体系结构 中图分类号:TP311.134 文献标识码:A 文章编号:1000-8136(2010)09-0161-02 1 多媒体数据库 1.1 多媒体数据 多媒体数据是指多种媒体,如数字、正文、图形、图像和声音的有机集成。其中数字、字符等是格式化数据,文本、图形、图像、声音、视频等是非格式化数据。多媒体数据的数据量十分庞大,各种数据之间的语义联系非常复杂,表达形式多样。 1.2 多媒体数据库及其数据模型 随着多媒体技术及其支撑技术的飞速发展,多媒体应用领域越来越广,所以,对多媒体信息进行快速高效的处理显得非常迫切。由于多媒体数据种类繁多,传统的数据库难以对这些媒体信息进行处理和管理,因而,产生了一种全新的数据库——多媒体数据库。 多媒体数据库(MMDB, Multimedia Database)是一个由若干多媒体对象所构成的集合,这些数据对象按一定的方式被组织在一起,可为其他应用所共享。 多媒体数据库是能够有效实现多媒体数据的存储、读取、检索等功能的数据库系统,它继承了传统数据库的一些优点,并能对具有时空关系的数据进行同步和管理。 数据模型是数据库系统的核心,从总体发展上看,多媒体数据库的数据模型可分为如下3类:①关系数据模型;②面向对象数据模型;③扩充的关系数据模型。 关系数据模型以关系代数作为其理论基础,发展至今已能够非常完善的处理传统的结构化数据。但是多媒体数据库里包含了大量的图形、图像、声音和视频等非结构化数据,这些数据结构异常复杂,且大部分不能用关系模型表示。因此关系数据模型在处理这些数据时就难以适用了。 面向对象数据模型对非结构化数据进行表示和操作非常方便,但是其技术没有关系数据模型那样成熟,理论研究和应用开发中还有很多问题需要解决。并且需要从底层重写代码,开发工作量大、周期长,由于这些问题的局限,当前使用面向对象数据模型开发多媒体数据库系统还主要应用在大公司指定开发的专用项目上,对于一般多媒体数据库系统开发项目来说,应用面向对象数据库模型来进行开发,从技术和经济条件上来讲都是不适用的。 使用扩充的关系数据模型来进行多媒体数据库系统的开发是当前最常用也是最成熟的方法。在传统的关系数据模型中引入了面向对象的思想、超文本(hypertex1)模型或超媒体方法,就解决了图形、图像、声音和视频等非结构化数据不能用关系模型表示的问题。2 多媒体数据库管理系统(MMDBMS) 多媒体数据库管理系统MMDBMS(MultiMedia DataBase Management System)是一个以多媒体数据库为基础的多媒体应用。该应用能够完成对多媒体数据库的各种操作及管理功能,如对MMDB的定义、创建、查询、访问、删除等。 2.1 MMDBMS的查询方式 针对多媒体应用的灵话性,人们希望MMBBMS能提供多种方式的“模糊”查询手段,具体描述如下: 2.1.1 基于元数据的查询 元数据在这里是指数据库条目的外在属性,比如作者姓名、创建时间以及标题等。在VOD(点播视频)应用中,这种方式的查询可以是:“请列出由×××在2007年出席的重要会议”这种类型的查询可以用传统的DBMS技术来实现。 2.1.2 基于注释的查询 注释是指对数据库条目内容的文字描述。查询时一般给出关键字或一些自由文本,而检索是基于查询与内容注释的相似性。这种方式的查询实例是这样的:“请放映一下东盟自由贸易区成立时的视频片段。”这种类型的查询要求事先对所有数据库条目都恰当地进行注释,然后用传统的IR技术进行处理。视频数据、脚本和字幕均可作为注释。 2.1.3 基于特征的查询 特征是指多媒体数据的统计信息,如音量、颜色分布及纹理等。这种方式的查询实例可以是这样:“请放映一个音量分贝在××至××的视频帧。”其中××可以是某个给定的声音分贝分布的直方图。处理这类查询,传统的DBMS已无能为力了,数据库条目的有关统计信息必须事先收集、整理并存储。 2.1.4 用实例查询 用多媒体数据对象来进行查询,这个对象可以是一个静止图像、一张草图或一个声音片段。这种方式的查询实例可以是这样的:“请放映一段视频,其中有类似×××的场景。”这种类型的查询中如果包含有数据对象的空间和时间关系,处理时可能会非常复杂,要支持这么多种复杂的查询方式,多媒体数据库引擎需要有全新的体系结构。 2.2 MMDBMS的体系结构 根据上一节描述的MMDBMS所支持的查询方式,本文给出图1所示的MMDBMS体系结构。其中主要的组成都分有:2.2.1 用户图形接口 MMDBMS的用户接口可以通过Internet或图形界面访问。网页登陆界面可以用Java applets来构造。这个用户接口支持用 - 161 -

lib和dll文件的区别和联系

(1)lib是编译时需要的,dll是运行时需要的。 如果要完成源代码的编译,有lib就够了。 如果也使动态连接的程序运行起来,有dll就够了。 在开发和调试阶段,当然最好都有。 (2)一般的动态库程序有lib文件和dll文件。lib文件是必须在编译期就连接到应用程序中的,而dll文件是运行期才会被调用的。如果有dll文件,那么对应的lib文件一般是一些索引信息,具体的实现在dll文件中。如果只有lib文件,那么这个lib文件是静态编译出来的,索引和实现都在其中。静态编译的lib文件有好处:给用户安装时就不需要再挂动态库了。但也有缺点,就是导致应用程序比较大,而且失去了动态库的灵活性,在版本升级时,同时要发布新的应用程序才行。 (3)在动态库的情况下,有两个文件,一个是引入库(.LIB)文件,一个是DLL文件,引入库文件包含被DLL导出的函数的名称和位置,DLL包含实际的函数和数据,应用程序使用LIB文件链接到所需要使用的DLL文件,库中的函数和数据并不复制到可执行文件中,因此在应用程序的可执行文件中,存放的不是被调用的函数代码,而是DLL中所要调用的函数的内存地址,这样当一个或多个应用程序运行是再把程序代码和被调用的函数代码链接起来,从而节省了内存资源。从上面的说明可以看出,DLL和.LIB文件必须随应用程序一起发行,否则应用程序将会产生错误。 一、开发和使用dll需注意三种文件 1、 dll头文件 它是指dll中说明输出的类或符号原型或数据结构的.h文件。当其它应用程序调用dll时,需要将该文件包含入应用程序的源文件中。 2、 dll的引入库文件 它是dll在编译、链接成功后生成的文件。主要作用是当其它应用程序调用dll时,需要将该文件引入应用程序。否则,dll无法引入。 3、 dll文件(.dll) 它是应用程序调用dll运行时,真正的可执行文件。dll应用在编译、链接成功后,.dll文件即存在。开发成功后的应用程序在发布时,只需要有.exe文件和.dll文件,不必有.lib文件和dll头文件。 动态链接库 (DLL) 是作为共享函数库的可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个 DLL 副本的内容。 动态链接与静态链接的不同之处在于:动态链接允许可执行模块(.dll 文件或 .exe 文件)仅包含在运行时定位 DLL 函数的可执行代码所需的信息。在静态链接中,链接器从静态链接库获取所有被引用的函数,并将库同代码一起放到可执行文件中。 使用动态链接代替静态链接有若干优点。DLL 节省内存,减少交换操作,节省磁盘空间,更易于升级,提供售后支持,提供扩展 MFC 库类的机制,支持多语言程序,并使国际版本的创建轻松完成。 lib与dll文件最大区别在调用方面 dll可以静态陷入 lib与DLL 从这一章起,我讲述的内容将特定于windows平台。其实这篇文章也可看作是我在windows下的开发经验总结,因为以后我决定转unix了。 前面有一章说编译与链接的,说得很简略,其实应该放到这一章一块儿来说的。许多单讲

FORTRAN静态库动态库的生成

FORTRAN静态库、动态库的生成、维护与调用 闫昊明2006-9-10 一、FORTRAN静态库的生成与维护 FORTRAN 静态库是经过编译的代码块,它与主程序相对独立,可以被主程序调用,是FORTRAN工程类型之一. 静态库包含一系列子程序,但不包括主程序. 静态库一般具有LIB扩展名并包含目标代码,且静态库存放在它们特定的目录中. FORTRAN静态库在组织大型程序和在不同程序之间共享子程序等方面具有较大的优点,其重要性不言而喻. 当将静态库与主程序联系起来时,在主程序中调用静态库中的任何子程序将编译到相应的可执行程序. 应用静态库的时候,只有所需要的子程序才在编译过程中插入到可执行文件(.EXE),这意味着这种可执行文件将比包含所有的子程序所生成的可执行文件小. 而且,不必担心哪些子程序是需要的,哪些是不需要的,编译器将替你做出选择. 同时,当更改静态库中的子程序时,相应的应用程序可以不做任何改变,而只需要对其进行重新的编译链接,即可获得新的结果,这无疑也是方便的. 目前,常用的FORTRAN静态库有很多种,WINDOWS操作系统下的Compaq Visual FORTRAN version 6.5(简称CVF65)自带的数学统计库IMSL就是一个非常全面的静态库,可以用来解决线性代数和统计学上的很多经典问题. 此外,在NCAR互联网站有很多有用的FORTRAN子程序(网址:https://www.sodocs.net/doc/123438282.html,/softlib/mathlib.html),其中包括地球物理科学问题、离散和快速Fourier变换、可分离的椭圆微分方程、插值、Legendre多项式、普通数学问题、本征值问题求解、线性方程求解、非线性方程求解、常微分方程求解、特殊函数、统计学等常用子程序集等. 这些FORTRAN子程序可以解决很多基础性的问题,因此有很高的利用价值. 在WINDOWS操作系统下,可以用两个命令分别生成静态库. 一个是用‘nmake’命令,它一般用来编译原来应用在UNIX环境下的FORTRAN子程序集,在编译过程中要读取makefile文件中的编译命令,类似于在UNIX下安装软件. 另一个是用‘lib’命令,它可以在WINDOWS环境下编译任何需要集成为静态库的子程序集. 编译静态库在DOS命令行环境下比较方便,以后的命令行都指在此环境下运行. 在编译静态库前,首先要安装CVF65,其次要完成要编译的FORTRAN子程序(*.f90). 对于FORTRAN子程序,最好用FORTRAN90的标准来完成,应该放弃FORTRAN77标准。FORTRAN90是FORTRAN语言从结构化走向面向对象化的重要一步,使FORTRAN语言更加接近C++。在FORTRAN90标准中,对数组的操作既增强了功能又简化了使用,此外自由格式、MODULE、动态数组、指针等的应用大大丰富了FORTRAN语言,使得编程更加轻松。目前,FORTRAN95和FORTRAN2000标准也在应用,它们与FORTRAN90标准比较类似,主要的改进在并行运算方面,因此目前在单机上应用的主要还是FORTRAN90. 在DOS命令行环境下,进入到FORTRAN子程序所在的子目录,然后按下面两个步骤生成FORTRAN静态库. (1)键入“df *.f90 /c”,回车,可以看到CVF65编译器对所有的FORTRAN子程序(*.f90)进行编译,生成*.obj文件(注意,编译时,/c中的“c”必须小写). (2)键入“lib *.obj /out:libname.lib”,回车,可以看到链接生成libname.lib静态库. 需要注意的是,每次加入新的子程序或对静态库中的子程序修改以后,都要按上述两个步骤重新进行编译链接. 生成静态库以后,可用“dumpbin /linkermember libname.lib”来查看静态库中可用的子程序名称. 也可执行“lib /list libname.lib”来查看静态库中的*.obj文件. 当然,也可以在CVF65集成环境下,生成静态库. 步骤如下:

数据库和多媒体的未来发展情况

数据库和多媒体的未来发展情况 数据库是为某种特殊目的组织起来的记录和文件的集合.传统的数据库管理系统在处理结构化数据文字和数值信息等方面是很成功的.但是在计算机辅助设计/制造和办公自动化等领域中处理大量的存在与各种媒体的非结构化数据如图形图像和声音等传统的数据库信息系统就难以胜任了因此需要研究和建立能处理非结构化数据的新型数据库多媒体数据库.多媒体数据库是建立多媒体信息管理系统与多媒体应用系统最重要的工具.多媒体数据库技术从作为传统数据库的一种高级应用开始到作为适用于多媒体数据的数据库管理系统历经近十年的研究与发展并将是未来数据库系统研究与发展的方向. 多媒体数据库的几种实现方法 3.1 从关系数据模型发展多媒体数据库 关系模型以其严密的关系理论和简明的用户界面在常规数据的信息管理中发挥了巨大作用.但是面对应用领域所涉及到的图形图像文字声音动画等多媒体数据,传统的数据库技术在数据模型数据类型定义语言操纵语言存储结构和存取路径等方面都无法适应.例如, 关系模型的规范关系要求数据项具有原子性, 而上述复杂的应用对象大多具有层次结构, 要求一个数据项能存放一个递归的关系, 即存入一个具有层次结构的对象, 因此传统的关系模型是完全不能适应多媒体数据的处理要求的, 必须从概念和体系结构上做较大的扩展与修改才能建立相应的多媒体数据库管理系统.对关系模型作以下扩展 1) 扩展基本关系类型支持复杂对象.这一扩展必然导致违反传统关系模型是第一范式的要求即关系定义中的每个属性所定义的类型必须是系统所支持的内部类型.这样扩展后属性可以不是系统所支持的内部类型而是用户自定义类型. 2) 对关系模型提供的操作加以扩充.传统的关系数据模型的数据操作能力十分有限只适用于事务处理领域.把传统的关系模型上的操作作为系统的缺省功能加以实现并提供这样的机制使用户能根据所定义的数据类型扩展其功能如新的存取复杂查询和完整性约束等这样就可以很好地支持抽象数据类型的概念. 3) 扩展面向对象的风范.如继承和动态联编面向对象的风范. 多媒体数据库对关系模型作一定的扩充后就能在可扩充的数据库管理系统中支持具有面向对象功能的许多新的应用而且改造和开发成本也较少.由于多媒体数据模型是对传统关系模型的扩展这就意味着它不能丢掉传统关系数据模型所具有的数据操作功能因此多媒体数据库的数据操作分为两部分一部分是传统SQL 语言所支持的功能另一部分操作功能是通过用户自定义的方式实现的即用户采用一种高级语言如C++ 来定义某个类型所独具的数据操作功能. 3.2面向对象数据库 面向对象数据库模型中的对象属性方法消息及对象类的层次结构和继承等特点使其能较好 地解决多媒体信息管理面临的问题因而受到人们的重视.在面向对象的系统中将类似的对象组合在一起形成一个对象类.属于同一类的对象具有相同的属性名和定义在这些属性上的方法.他们响应同样的消息.系统中的对象除了具有聚合的联系外还有一种概括的联系.采用面向对象数据库的处理模式传统数据库所面对的许多难题可得到解决.它可以方便灵活地处理图形图像声音文字和动画等

编译生成动态库时,被关联的静态库会被编译到动态库里面

动态库调用静态库. 生成动态库: 需要的目标文件得用-fPIC选项生成. 而静态库所需的目标文件可以不用-fPIC选项. 一个应用程序调用动态库, 而这个动态库其中的函数调用某静态库时,如何生成应用程序呢? 例: /////// static.h void static_print(); ///////static.cpp #include #include "static.h" void static_print() { std::cout<<"This is static_print function"< #include "shared.h" #include "static.h" void shared_print() { std::cout<<"This is shared_print function"; static_print(); } ////////test.cpp #include "share.h" int main() { shared_print(); return 0; } 方法一: 静态库的.o文件也用-fPIC生成. 生成动态库时把静态库加入. 生成应用程序时只加载动态库 g++ -c -fPIC static.cpp // 生成static.o ar -r libstatic.a static.o // 生成静态库libstatic.a g++ -c -fPIC shared.cpp // 生成shared.o g++ -shared shared.o -lstatic -o libshared.so // 生成动态库libshared.so 注: -shared是g++的选项,与shared.o无关. -lstatic选项把libstatic.a的函数加入动态库中. g++ test.cpp -lshared -o test.exe // link libshared.so 到test.exe中. 方法二: 静态库的.o文件不用-fPIC生成. 生成动态库时不加静态库. 生成应用程序时加载动态库和静态库. g++ -c static.cpp // 生成static.o ar -r libstatic.a static.o // 生成静态库libstatic.a g++ -c -fPIC shared.cpp // 生成shared.o g++ -shared shared.o -o libshared.so // 生成动态库libshared.so 注: -shared是g++的选项,与shared.o无关. 这时如果加-lstatic. error:relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC

SQL多媒体数据库开发

需求分析-后台SQL数据库开发部分 项目背景介绍 项目产品“自动商务智能网络系统”的后台设计方案,基本功能要点如下: 1、本系统通过无线采集数据,实时获取AVM的销售数据,然后根据网络统计的销 售状况自动进行商品销售状况分析,自动预测商品的销售走势,分析布点位置的赢利性,自动确定合理的采购和配送策略,进而通过自动化管理帮助运营商获得最高的投资回报率; 2、系统通过无线传输多媒体数据,搭建出一个媒体运营平台,实现“信息随处可 得”,例如可推广多媒体的互动应用、广告的实时动态变化管理等等,为AVM 行业的发展开拓了崭新的运营模式。 我们项目后台设计的突出特点: ●实现AVM信息来源单一。这里的来源单一并不是指由单一渠道和模式收集 信息,而是指由各种渠道收集来的信息最终汇总到单一入口,由指定人员 保证信息来源的可靠性,有固定职位对信息进行加工和输入。也就是说, 对信息的来源、收集、输入、加工、处理都应该有指定人员负责,以保证 信息的真实性、准确性和安全性。 ●企业信息实现实时共享。一个成功的网络信息系统带给企业最大的好处往 往是促进企业内部管理流程的优化,在改进企业组织结构和工作流程的基 础上,生成高效迅捷的信息传递管道,反过来理顺企业内部管理流程和增 值链,最终实现企业及其与供应商、代理商之间的供应链的TQCS最优(即 时间最短、质量最佳、成本最低、服务最佳)。 ●实现企业信息的多角度,多路径查询。例如,当我们进行存货管理时,如 果实行了信息集成,则不仅可以查到现有存货的总量,而且可以一步检索 到库存物品的明细种类,查询到现有存货中有多少已经被将来调用,有多 少已经在运送的途中,根据数据库中的产品多媒体清单,我们可以不再用 安全库存点的方法来跟踪库存,计算机根据内置程序依照企业设定的主生 产计划自动计算出应下达某种订货单据的相应日期。 ●严格地讲,网络信息系统的后台部分是一项管理工作,而非一般理解中的信息技术 工作。建立一个成功的管理信息系统首先要明确企业的战略定位、管理模式,要与 销售、生产、库管、物流、财务、人力资源等各个部门分工协作相互配合,各个部 门的基础数据,工作流程和管理规范永远制约着信息系统的建设,如何协调各部门 工作,以何种顺序,何种技术手段来搭建管理信息系统是后期设计面临的主要问题。系统基本结构如下图所示:

C语言程序静态库和动态库的创建及其应用

C语言程序静态库和动态库的创建及其应用 在用c写程序时,很多时候需要存储一些简单的数据,如果为此而用mysql数据库就有些大才小用了,可以把这些数据以结构的形写入文件,然后再需要时读取文件,取出数据。 如下是定义函数的源文件和头文件: 源文件struct.c: #include "struct.h" //第一个参数是要写入的文件名,第二个参数是缓冲区,第三个参数是缓冲区大小,第四个参数是打开文件流的形态,返回TRUE表示写入成功,返回FALSE表示写入失败int writeStruct(const char *fileName,char *buffer,int bufferLen,char *mode){ int ret; FILE *fileID = NULL; fileID = fopen(fileName,mode); if (fileID == NULL){ perror("fopen"); goto writeEnd; } rewind(fileID); ret = fwrite(buffer,bufferLen,1,fileID); if (ret <= 0){ perror("fwrite"); goto writeEnd; } if (fileID != NULL){ fclose(fileID); fileID = NULL; } return TRUE;

writeEnd: if (fileID != NULL){ fclose(fileID); fileID = NULL; } return FALSE; } //第一个参数是要读取的文件名,第二个参数是缓冲区,第三个参数是缓冲区大小,第四个参数是打开文件流的形态,返回TRUE表示读取成功,返回FALSE表示读取失败int readStruct(const char *fileName,char *buffer,int bufferLen,char *mode){ int ret; FILE *fileID = NULL; fileID = fopen(fileName,mode); if (fileID == NULL){ perror("fopen"); goto readEnd; } rewind(fileID); memset(buffer,0,sizeof(buffer)); ret = fread(buffer,bufferLen,1,fileID); if (ret >= 0){ strcat(buffer,"\0"); }else{ perror("fread") ; goto readEnd; } if (fileID != NULL){ fclose(fileID); fileID = NULL; }

使用Automake生成Makefile及动态库和静态库的创建

使用Automake生成Makefile及动态库和静态库的创建使用Automake 创建和使用静态库 1. 目录结构如下: [c-sharp]view plaincopy 1.example 2.|——src 目录(存放源代码文件) 3. |——hello.c 4.|——lib 目录(存放用来生成库的文件) 5. |——test.c 用来生成静态库libhello.a 6.|——include 目录(存放程序中使用的头文件) 7. |——hello.h 2. 编写的各个目录下的源文件 [c-sharp]view plaincopy 1.hello.h 文件 2.extern void print(char *); 3.test.c 文件 4.#include 5.void print(char *msg) 6.{ 7.print(“%s/n”, msg); 8.} 9.hello.c 文件 10.#include “hello.h” 11.int main() 12.{ 13.print(“Hello static library!”);//这里用到的是静态库中的函数 14.return 0; 15.} 3. 编写lib/Makefile.am 文件

[c-sharp]view plaincopy 1.noinst_LIBRARIES=libhello.a 2.libhello_a_SOURCES=test.c 3.AUTOMAKE_OPTIONS=foreign 第一行noinst 表示生成的是静态库,不需要make install ,直接制定它的位置和名字就 可以使用。 第二行表示用来生成静态库的源文件。如果要把静态库生成到其他地方,可以在=后面 加上路径(建议用绝对路径,并将所要用到的静态库生成在同一个文件夹下,如lib)。 第三行AUTOMAKE_OPTIONS 是Automake 的选项。Automake 主要是帮助开发 GNU 软 件的人员来维护软件,所以在执行Automake 时,会检查目录下是否存在标准GNU 软件中 应具备的文件,例如 'NEWS'、'AUTHOR'、 'ChangeLog' 等文件。设置为foreign 时,Automake 会改用一般软件的标准来检查。如果不加这句的话,需要在autoconf之前,先执行touch NEWS README AUTHORS ChangeLog 来生成'NEWS'、'AUTHOR'、 'ChangeLog' 等文件4. 编写src/Makefile.am 文件 [c-sharp]view plaincopy 1.AUTOMAKE_OPTIONS=foreign 2.INCLUDES= -I../include 3.bin_PROGRAMS=hello 4.hello_SOURCES=hello.c 5.hello_LDADD=../lib/libhello.a 第二行指定头文件的位置,-I 是idirafter 的缩写。../include 指定头文件的位置,..是上 一级目录,也就是这里的example 目录。 第三行指定生成可执行文件名hello,在这里可执行文件生成在src 下,建议将可执行文 件生成到一个特定的文件夹下,让它和源代码分开,如/root/test 目录下。写法为: [c-sharp]view plaincopy 1.bin_PROGRAMS=/root/test/hello,后面的第四、五行也相对应地变为: 2._root_test_hello_SOURCES=hello.c 3._root_test_hello_LDADD=../lib/libhello.a

多媒体数据库资源管理系统设计与实现

龙源期刊网 https://www.sodocs.net/doc/123438282.html, 多媒体数据库资源管理系统设计与实现 作者:彭莉 来源:《电脑知识与技术·学术交流》2008年第31期 摘要:随着互联网的发展,通信的日益发达,人们的生活更加丰富多彩。人们已经不满足于以往的文字信息、静态信息的浏览,而是更希望欣赏到视频、音频大量的多媒体资源。多媒体资源的数量庞大使得管理日益成为一个严峻的问题,本文的多媒体数据库资源管理进行了分析和设计实现。 关键词:多媒体;数据库;资源管理;系统设计 中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)31-0957-02 Multimedia Database Resources Management System Design and Implementation PENG Li (Xinhua News Agency, Beijing 100083, China) Abstract: With the development of the Internet, communication increasingly developed people's life more colorful. People are no longer satisfied with the previous text messages, browse the static information, but also hope to enjoy video, audio, a large number of multi-media resources. The large number of multimedia resources makes management is increasingly becoming a serious problem, the paper's multimedia database management resources to achieve the analysis and design. Key words: multimedia; database; resource management; system design 1 引言 如今,互联网己经越来越多的介入人们的生活之中。早期的互联网只是一些简单文本的相互传输,用于科学家之间的信息交流。随着互联网的发展,互联网应用于越来越多的领域,人们对互联网也有着越来越多的要求,如信息检索,电子商务,信息交流,网上检索等等。 人们已经不满足于以往的文字信息、静态信息的浏览,而是更希望欣赏到视频、音频大量的多媒体资源。电子资源是把文字、图像、声音、动画等多种形式的信息以电子数据的形式存贮在光盘、磁盘、磁带等非纸介质的载体中,并通过网络通信、计算机或终端等方式再现出来的资源。电子资源作为新的信息载体,其类型多样,信息含量大,内容形象生动。 使得其内容的展现更加丰富多彩的同时,也为资源的管理带来了困难,多媒体资源的数量 庞大使得管理日益成为一个严峻的问题。采用什么样的管理方式才能使其方便、高效的被利用呢?这是本文要研究的问题。

VC++动态链接库创建和调用全过程详解

1.概论 先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直接包含在最终生成的EXE文件中了。但是若使用DLL,该DLL不必被包含在最终EXE文件中,EXE文件执行时可以“动态”地引用和卸载这个与EXE独立的DLL文件。静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。 对动态链接库,我们还需建立如下概念: (1)DLL 的编制与具体的编程语言及编译器无关 只要遵循约定的DLL接口规范和调用方式,用各种语言编写的DLL都可以相互调用。譬如Windows提供的系统DLL(其中包括了Windows的API),在任何开发环境中都能被调用,不在乎其是Visual Basic、Visual C++还是Delphi。 (2)动态链接库随处可见 我们在Windows目录下的system32文件夹中会看到kernel32.dll、user32.dll和gdi32.dll,windows的大多数API都包含在这些DLL中。kernel32.dll中的函数主要处理内存管理和进程调度;user32.dll中的函数主要控制用户界面;gdi32.dll中的函数则负责图形方面的操作。 一般的程序员都用过类似MessageBox的函数,其实它就包含在user32.dll这个动态链接库中。由此可见DLL对我们来说其实并不陌生。 (3)VC动态链接库的分类 Visual C++支持三种DLL,它们分别是Non-MFC DLL(非MFC动态库)、MFC Regular DLL(MFC规则DLL)、MFC Extension DLL(MFC扩展DLL)。 非MFC动态库不采用MFC类库结构,其导出函数为标准的C接口,能被非MFC或MFC编写的应用程序所调用;MFC规则DLL 包含一个继承自CWinApp的类,但其无消息循环;MFC扩展DLL采用MFC的动态链接版本创建,它只能被用MFC类库所编写的应用程序所调用。 由于本文篇幅较长,内容较多,势必需要先对阅读本文的有关事项进行说明,下面以问答形式给出。 问:本文主要讲解什么内容? 答:本文详细介绍了DLL编程的方方面面,努力学完本文应可以对DLL有较全面的掌握,并能编写大多数DLL程序。 问:如何看本文? 答:本文每一个主题的讲解都附带了源代码例程,可以随文下载(每个工程都经WINRAR压缩)。所有这些例程都由笔者编写并在VC++6.0中调试通过。

多媒体数据库的发展认识

多媒体数据库技术的发展认识随着近时代电子计算机的诞生,我们的工作、生活发生了革命性的变化,特别是近几年,计算机行业一次次的飞跃是我们亲身体会的,如多媒体产生而带来的巨大影响. 多媒体正以全新的方式在众多领域中得到广泛应用,为广大用户提供了丰富多彩的信息服务,其涉及的应用领域主要有办公室自动化、教育、新闻、娱乐、医疗、计算机协同工作(CSCW)等等.特别是在多媒体电子邮件系统、视频点播系统(VOD)、地理信息系统、计算机桌面会议系统、远程医疗诊断系统、企业无纸化办公等方面都有实际成功的案例. 多媒体技术及相关新技术的飞速发展,其应用领域将越来越广,实用系统也会越来越多,因而信息量将会大幅度地增长,数据量大、内容复杂,而且面临数据共享、数据保密等各种方面的要求,此时对信息进行快速高效的处理就显得非常重要了. 多媒体数据(Multimedia Data)是指多种式样信息的载体,例如:文本、图形、图象、声音等数据. 多媒体数据的特点是:种类繁多(大多是非结构化数据),来源于不同的媒体,具有完全不同的形式和格式;数据量庞大;具有时间特性和版本概念。由此可知多媒体数据与传统的数值和字符不同,因而其存储结构和存取方式也具有特殊性,描述它的数据结构和数据模型也是有差别的. 因而出现多媒体数据库系统.数据库系统的一个重要概念是数据的独立性,用户对数据的任何操作(如查询、修改)不再是通过应用程序直接进行,而必须通过向数据库管理系统发请求实现。 一、多媒体数据库的数据模型:

从多媒体数据库总体的发展上看,可分为三类:(1) 关系数据模型;(2) 面向对象的数据模型;(3)超媒体数据模型. 基于不同数据模型的多媒体数据库管理系统的功能也有很大差别。 (一)、关系数据模型 通常基于关系数据模型的多媒体DBMS可以实现多媒体数据的存取,对多媒体数据对象之间的语义关系、时态关系、空间关系不加处理,所以这部分工作就留给应用程序去完成了。这类系统典型的有ORACLE7.0、INGRES6.0、nfomix-Online等。它们是在著名的商品化关系DBMS的基础上扩充了一种新类型的字段以支持多媒体数据的存取,对关系数据模型的基本结构不作改动. 用户只能对字段的存在进行查询,不能实现基于字段内容的查询。 (二)、面向对象数据模型 面向对象数据模型可以支持多媒体数据对象之间的语义关系、时态关系、空间关系的处理,其抽象程度更高,但DBMS的实现也相对复杂。面向对象技术以其丰富的建模能力而备受青睐,它通过对现实世界的抽象描述而对各种媒体数据加以定义和操作. 如当前流行的视频点播系统(Vedio_On_Demand)就是这一模型应用的实例。 (三)、超媒体数据模型 超媒体是利用关系链来表示离散数据片断(nodes)的方法. 超媒体的数据片断可以是任何媒体形式的数据,如文本、图象、图形、声音、视象等. 用户通过链由一个信息结点转移到另一个信息结点. 从而实现信息的查询。我们经常看到的地理信息系统(GIS)就是这一模型的典型应用。

相关主题