A. 几种常用软件开发工具比较
文章客观评价了各种开发工具的优缺点,本人把文章拿来和大家一起讨论一下,欢迎专业人事补充和指正。 VB:无★ PB:WINDOWS 家族, Solaris,Macintosh ★★★ C++ Builder/Dephi:WINDOWS 家族,linux ★★★ VC:无★ java:所有能够运行JAVA 虚拟机的操作系统 ★★★★ VB:COM,ActiveX ★★★ PB:COM,JavaBean,Jaguar,UserObject 使用:CORBA+Acti veX ★★★ C++ Builder/Dephi:COM, ActiveX CORBA(本身自带CORBA 中间件VisiBroker,有丰富向导) ★★★★★ VC:COM,ActiveX,CORBA(没有任何IDE 支持,是所有C 编译器的功能,需要CORBA 中间件支持) ★★★ JAVA:JavaBean,CORBA;ActiveX ★★★★ 数据访问对象: VB:DAO,ADO,RDO 功能相仿; ★ PB:Transaction,DwControl,可绑定任何SQL 语句和存储过程,数据访问具有无与比拟的灵活性 ★★★★ C++ Builder/Dephi:具有包括DataSource,Table,Query,Midas,ADO 在内的二十多个组件和类完成数据访问 ★★★ VC:同VB,但有不少类库可供使用,但极不方便,开发效率很低 ★★ JAVA:JAVA JDBC API,不同的IDE 具有不同的组件 ★★ 数据表现对象: VB:DBGriD,与数据库相关的数据表现控件只有此一种,只能表现简单表格数据,表现手段单一 ★ PB:DataWindow 对象(功能异常强大,其资源描述语句构成类似HTML 的另外一种语言,可在其中插入任何对象,具有包括DBGrid 在内的数百种数据表现方法),只此一项功能就注定了PB 在数据库的功能从诞生的那 一天起就远远超过了某些开发工具今天的水平 ★★★★★ C++ Builder/Dephi:具有包括DBGrid,DBNavigator,DBEdit,DBLookupListBox 在内的15 个数据感知组件,DecisionCube,DecisionQuery 在内的6 个数据仓库组件和包括QRChart, QRExpr 在内的20 多个报表组建,可灵活表现数据 ★★★ VC:同数据访问对象 ★ JAVA:不同的IDE 具有不同的组件,比较着名的有Jbuilder,PowerJ,VisualAge for Java ★★ 语句执行方式: VB:将一句SQL 串绑定到一个命令对象中,结果返回到ResultSet 对象中自行拆取 ★ PB:是一种真正的4GL 语言,可随意直接嵌套SQL 语句返回值被赋值到语句的变量中,支持语句级游标,存储过程和数据库函数,是一种类似SQLJ 的规范 ★★★★★ C++ Builder/Dephi:使用数据库组件或类完成SQL 语句串的执行和提交★★ VC:同数据访问对象 ★ JAVA:SQLJ,JAVA JDBC API ★★★★ VB:调用API 需申明,调用不方便,不能进行DDK 编程,不可深入Ring0 编程,不可嵌套汇编 ★ PB:调用API 需申明,调用不方便,不能进行DDK 编程,不可深入Ring0 编程,不可嵌套汇编 ★ C++ Builder/Dephi:直接调用API,可进行DDK 编程,可深入Ring0 编程,可嵌套汇编 ★★★★★/★★ VC:直接调用API,可进行DDK 编程,可深入Ring0 编程,可嵌套汇编★★★★★ JAVA:推出了JINI 规范但不能对不支持JINI 的设备编程,眼下并不实用★ VB:可进行Direct Api 编程;调用OpenGL 很不方便;自带少量图形图像处理控件,使用方便但功能一般;支持图像文件类型较少 ★★ PB:可进行Direct Api 编程;调用OpenGL 很不方便;图形图像处理不方便 但可调用API 完成图形图像操作,也可借助控件开发;支持图像文件类型很多 ★ C++ Builder/Dephi:可进行Direct Api 编程;调用OpenGL 比较方便;自带丰富的图形图像处理组件及类,使用很方便且功能强大;支持图像文件类型一般 ★★★★★ VC:可进行Direct Api 编程;调用OpenGL 比较方便;自带丰富的图形图像处理类,使用不方便但功能强大;支持图像文件类型较少 ★★★★ JAVA:很难调用Direct Api 和OpenGL;自带相当丰富的图形图像处理组件及类,使用不方便但功能强大;支持图像文件类型一般 ★★★★ VB:Asp,VBScript,具有编写DHTML 的简单IDE,编写静态页面非常方便;用于网络通讯的支持一般 ★★ PB:DynaSript, Web.PB;提供了较多动态生成Web 页面的用户对象和服务以及系统对象,非常适合编写服务端动态Web 应用,有利于商业逻辑的封装;用于网络通讯的支持不足;静态页面定制支持有限 ★ C++ Builder/Dephi:ISAPI,WININET API 等各类网络或互联网API 可自由而方便的调用;提供了Server Socket,ClientSocket 等三十余个组件及类,用来处理网络通讯控制,流处理, Mail,Email,FTP,HTTP 等应用协议处理以及生成动态页面和商业逻辑的封装;功能强大,使用方便 ★★★★★ VC:SAPI,WININET API 等各类网络或互联网API 可自由而方便的调用;提供CAsyncSocket 等数量众多的类;功能强大但使用不太方便 ★★★ JAVA:不可直接调用API 但内置非常多的网络及互联网功能;可利用Servlet API,Java Bean API,以及JSP 等协同开发功能强大的Web 应用;功能强大,对于某些IDE 使用不太方便 ★★★★★ VB:控件开发模式(OCX) ★★ PB:组件开发模式(User Object) ★★ C++ Builder/Dephi:源代码组件开发模式(VCL) ★★★★★ VC:应用程序框架开发模式(MFC) ★ JAVA:框架开发模式(JDK 下)+组件开发模式(IDE 下) ★★★ VB:差★ PB:较好 ★★★ C++ Builder/Dephi:很好 ★★★★ VC:一般 ★★ JAVA:非常好 ★★★★★ VB:较高 ★★★ PB:很高 ★★★★★ C++ Builder/Dephi:高★★★★ VC:低★ JAVA:高★★★★ VB:一般 ★★ PB:较高 ★★★ C++ Builder/Dephi:很高 ★★★★★ VC:很高 ★★★★★ JAVA:低★ VB:很好 ★★★★★ PB:较好 ★★★ C++ Builder/Dephi:差★ VC:好★★★★ JAVA:较好 ★★★ VB:非常好 ★★★★★ PB:好★★★ C++ Builder/Dephi:好★★★ VC:不好 ★ JAVA:不好 ★ VB:很多 ★★★★★ PB:较多 ★★★ C++ Builder/Dephi:较多 ★★★ VC:多★★★★ JAVA:不多 ★ VB:非常强大 ★★★★★ PB:比较强大 ★★★ C++ Builder/Dephi:一般 ★★ VC:非常强大 ★★★★★ JAVA:强大 ★★★★ VB:差★ PB:一般 ★★ C++ Builder/Dephi:一般 ★★ VC:好★★★ JAVA:非常好 ★★★★★ VB:很好 ★★★★ PB:一般 ★★ C++ Builder/Dephi:很好/差 ★★★★/★ VC:很好 ★★★★ JAVA:很好 ★★★★ 结论: VB:是新人开发与系统无关的综合应用程序的首选
B. 对linux系统上的oracle数据库,用什么开发工具!急!!
Oracle工具家族手册
Oracle Designer
一个基于共享信息仓储的建模和生成工具,设计和建立应用与数椐库定义的高效开发环境。
Oracle Developer
一个用于建立企业级客户/服务器和Web数椐库应用的、易于使用的集成式快速应用开发环(RAD)。
Oracle JDeveloper
在个利用java来建立基于部件的数椐库应用的最具生产力的开发环境。
Oracle Reporls
一个用于发布和报告的解决方案,部门可以利用它在其企业内部网或Internet上动态地发布信息。
网络计算工具
Oracle?的开发工具能为你提供最具生产力的数椐库应用开发环境。这些应用可以部署在可伸缩的专业管理服务器上,并能通过任何一台运行有标准Interner浏览器的PC或NC来访问。
高生产力
Oracle开发工具利用基于模型的方法设计和实现实际应用,多用户、共享式的Oracle信息仓储为业务、应用模型和规则提供了一个中央存储场地。应用再根椐这些模型自动生成,避免了应用彩不兼容的工具和语言通过手工来编制,造成可重用性低,低质量、高维护的系统。彩业务模型生成的应用,易维护、易调试、高质量,并且可以分布在客户/服务器用网络计算(Interner computing)应用方式下。
基于服务器的部署
客户/服务器体系结构要求应用安装在第一个卓面机上,这使得安装和管理成本大大的增加。而且,对于网络具有甚高的要求,使通过广域网(WAN)或Internet来使用应用不现实。
利用Oracle开发工具所构造的数椐库应用可以部署在伸缩性很强的专业管理应用服务器上,采用基于服务器的部署方式,在服务器上集中管理应用并按需将应用下载到瘦客户机上,从而使上述问题得以圆满解决,无需管理员管理,从而大大降低了成本。任何运行有标准 Internet浏览器的PC或NC都可以访问这些应用,甚至通过非常窄的网络带宽也能顺利进行。
充分利用Oracle平台
Oracle工具采用了与数椐库相同的语言,它允许对应用进行高效分割和高度,利用Oracle工具构建的应用可以自动且充分地利用网络带宽,能充分利用Oracle企业级平台各级特性,具有较强的可伸缩性、高可靠性。
投资保护
在进入新一代的计算机环境中手工建立的应用,第一行代码都必须重复开发,以便能从新一代计算环境中完全受益。但使用Oracle的工具对应用进行建模,部门将真正拥挑战性技术。
决策支持
Oracle的决策支持产品家族全面致力于企业决策支持的需求;从生产报告、特殊查询,直到高层分析,以协同工作的方式可共同创建一个无缝的分析和报告环境,从而对棘手问题给予快速解答。这种集成式解决方案具有超于一般的易用性和无以伦比的性能,而花费和部署方面的成本却被大大的降低。
该产品家族包括:
Oracle Reports---企业生产报告工具,IS开发者可用它来建立和开发复杂的高质量报告。
Oracle Discoverer---一个获得了特别奖的查询和分析工具,用于访问数据仓库,数据集市和 正在动作的数据库。
Oracle Express---世界上最先进的、面向联机分析处理(OLQP)的计算机引擎和多维数据高速缓存。
企业级工具
Oracle已经为办公室前台和后台提供了丰富而倍受欢迎的应用,这些应用覆盖了制造业、人力资源、销售部门办公自动化,以及连锁店管理。这种规模和复杂度的应用均需企业级工具。这也正是使用Oracle工具家族全面开发Oracle应用的原由所在。Oracle借助其工具技术 ,为企业提供迁移到客户服务器直到web方式,因此扔有成百甚至上行用户的客户均可以大大降低企业应用的实现、维护和更新成本及其复杂性。
集用户所有需求于一体
基于Oracle的套件战略,我们正在推出集用户所有需求于一体的解决方案。用户将能获得“一次到位”的购买方式的所有益处。
所有产品均能保证在一起顺利运用。文件亦能交叉参考的机制,能提供不同产品间的完全兼容。
Oracle Enterprise Developer Suite(Oracle企业开发套件)是一项基于模型来进行应用开发的产品套件。这一获奖产品可全面用于建立具有高度伸缩性和高可靠性的企业级数据库客户/服务器应用的web应用。对基于部件的开发Oracle JDeveloper Suite可向你提供建立2层和3层java数据库应用和部件的所有之需。
Oracle领导市场新潮流
Oracle是当今唯一一个提供适于整个系统生命周期的集成式企业开发工具集的厂商。Oracle工具所拥有的生产力和可伸缩能力已经导致了其在市场上的领导地位。Oracle拥有部署客户机应用、保护当前体系结构投资的独一无二的能力,南昌同时, 它却降低于Interner计算环境的成本,增加了对Internet计算环境可访问性的利益。Oracle工具已经帮助了客户从字符系统转移到客户/服务器架构,而今天已经转移到Internet计算环境之中。Oracle工具必将伴你走向末来。
Oracle Developer/2000
Oracle Developer 简 介
Oracle Developer/2000可以说是当今最好的开发工具,它以其全中文界面和其易于使用的集成式快速应用开发环境而倍受开发人员的欢迎。
Oracle Developer 提 供 有 一 个 集 成 式 工 具 集, 支 持 大 规 模 开 发 活 动 的 生 产 力 需 求。Oracle Developer 支 持 企 业 级 应 用 的 可 伸 缩 需 求, 维 护 不 断 变 化 的 应 用 需 求, 以 及 真 实 环 境 中 的 异 构 性。 简 而 言 之,Oracle Developer 能 够 实 现 了Internet 计 算 环 境 的 种 种 愿 望。
生 产 力
Oracle Developer 中 纳 入 了 一 个 集 成 式 构 造 器 集 合, 用 于 创 建 表 格、 报 告、 图 表、 查 询、 数 据 库 对 象 和 过 程。 这 些 部 件 使 用 了 强 大 的 说 明 能 力, 允 许 你 直 接 从 数 据 库 定 义 中 创 建 应 用 而 无 需 编 号 任 何 代 码。
Oracle Developer 通 过 使 用 快 速 应 用 开 发(RAD) 技 术、 面 向 对 象 技 术, 基 于 计 算 机 的 内 部 学 习, 以 及 统 一 的 客 户、 应 用 服 务 器 和 数 据 库 服 务 器 体 系 结 构, 为 客 户/ 服 务 器 和Web 开 发 建 立 了 新 的 易 于 使 用 的 生 产 力 标 准。
组 织 的 开 发 标 准 能 够 轻 易 地 适 用 于 自 定 义 的 应 用 模 和 默 认 的 应 用 对 象 设 置。 为 了 达 到 最 高 的 生 产 力, 开 发 人 员 可 以 从 使 用Oracle Developer 创 建 的 模 型 中 直 接 选 择 以 生 成 完 整 的Oracle Developer 应 用。
可 伸 缩 性
Oracle Developer 的 嵌 入 式 特 性 允 许 客 户 在10 到1000 个 用 户,MB 到GB 级 数 据, 决 策 支 持 到 复 杂OLTP 应 用 间 自 由 伸 缩。 同 时Oracle Developer 灵 活 的 多 层 体 系 结 构 还 支 持Oracle 应 用 服 务 器 或 第 三 方 应 用 服 务 器, 如TP 还 支 持 监 视 器, 并 因 此 确 保 了 从 桌 面 级 到 专 业 级 的 可 伸 缩 性。
开 放 性
在Oracle Developer 的 其 他 应 用 和 工 具 间 基 于 标 准 的 交 互 是 建 立 在OCX/ActiveX 控 件,OLE( 对 象 连 接 与 嵌 入) 以 及DDE( 动 态 数 据 交 换) 之 上 的。 通 过 开 放API 对 多 种 多 媒 体 格 式 的 补 充 支 持,Oracle Developer 使 开 发 人 员 能 够 灵 活 地 扩 充 应 用, 并 能 将 其 他 部 件 集 成 在 这 些 应 用 之 中。
Oracle Developer 不 仅 向 您 提 供 了 最 优 的Oracle 数 据 库 集 成, 而 且 还 提 供 了 对 所 有 主 流 数 据 库 包 括Oracle Developer Rdb、Microsoft SQL Server、Informix、Sybase 和DB/2 的 透 明 访 问。 对 数 据 库 的 访 问 可 以 通 过 数 据 库 直 接 驱 动 器 以 及 通 过Oracle Developer API 和Oracle Gateways 实 现。
Oracle Developer 应 用 可 以 轻 易 地 转 换 和 部 署 在 超 过43 种 语 言 之 上, 它 提 供 了 高 生 产 力、 经 济 实 惠 的 解 决 方 案, 可 以 支 持 和 管 理 表 格、 报 告、 图 形 转 换。 它 允 许 组 织 机 构 同 时 发 行 本 国 和 多 语 种 应 用。 对UNICODE 的 支 持 也 使 得 用 户 能 够 在 同 一 屏 幕 上 显 示 单 字 节 和 多 字 节 语 言。
通 过 合 作 伙 伴, 开 放 工 具 创 始 协 会 成 员 的 努 力 我 们 为 第 三 方 产 品 提 供 了 众 多 接 口。 这 些 接 口 包 括 版 本 控 制 和 配 置 管 理 工 具、 测 试 工 具、 压 缩 分 析 和 质 量 控 制 工 具、 迁 移 工 具 以 及 其 他 许 多 种 工 具。
Web 事 务
今 天, 组 织 机 构 所 需 要 的 是 充 分 利 用Web 的 投 资 及 其 访 问 能 力, 而 同 时 要 保 护 其 在 客 户/ 服 务 器 应 用 上 的 投 资。
Oracle Developer Server 满 足 了 这 一 挑 战, 它 能 够 通 过 独 一 无 二 的 技 术 在 单 个 应 用 中 体 现 客 户/ 服 务 器 和Web 的 益 处。Oracle Developer Server 使 用Java 来 提 供 应 用 的 用 户 界 面, 同 时 还 动 用 了Oracle Developer 处 理 引 擎 对 可 伸 缩 应 用 服 务 器 的 强 大 支 持 来 处 理 事 件 和 与 数 据 库 交 互。 结 果, 它 带 来 了 这 样 一 个 好 处, 即 在 任 何 一 个 可 运 行Java 使 能 的Web 浏 览 器 的 瘦 客 户 机 上, 客 户/ 服 务 器 应 用 都 能 以 保 持 不 变 的 姿 态 加 以 运 行, 并 因 此 消 除 了 在 每 个 客 户 机 上 安 装 运 行 时 软 件 或 应 用 软 件 的 需 求。
C. linux环境下的apache服务器中的网页能调用ocx控件么如果能的话,如何调用
可以啊,只要保证你执行端(访问端)是IE就行了,
调用OCX控件,查一下HTML中使用控件,网上一大堆。
另外,OCX中,一般都有包含调用是否成功的函数,这个你要
知道OCX的接口。
D. JAVA 调用OCX的问题在线等,急~先给100分不够的可以加
我之前用过jni和jna框架,这里有段我写的jni例子,你参考下:
------------------------------------------------------------------------
1.java文件:HelloWorld.java
public native void sayHello();
public static void main(String[] args){
System.loadLibrary("HelloWorld");
new HelloWorld().sayHello();
}
}
2.编译:javac HelloWorld.java
3.生成头文件:javah HelloWorld,注意应从java_home中拷贝jni.h和jni_md.h到当前目录中
/* DO NOT EDIT THIS FILE - it is machine generated */
#include "jni.h"
/* Header for class HelloWorld */
#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloWorld
* Method: sayHello
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_sayHello
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
4.编写C代码:HelloWorld.c
#include "HelloWorld.h"
#include <stdio.h>
JNIEXPORT void JNICALL Java_HelloWorld_sayHello(JNIEnv * j, jobject jo)
{
printf("HelloWorld!");
}
5.编译
gcc -shared -o libHelloWorld.so HelloWorld.c
6.运行
java HelloWorld
注意,要将libHelloWorld.so放在LD_LIBRARY_PATH中。
public class UnsatisfiedLinkErrorextends LinkageError当 Java 虚拟机无法找到声明为 native 的方法的适当本地语言定义时,抛出该错误。
nm libHelloWorld.so | grep Java查看so中的相关函数。
--------------------------------------------------------------
我之前公司的有些情况是这样:
1、页面上调用控件向COM串口发送数据,这个是js实现的,在html的body中有个object的属性可以指定所用的控件,然后js直接方法名调用就可以。
2、在服务器端,使用的是jna调用本地的so库文件,在windows下就是dll文件。如上面的小例子,如果用jni需要额外引入个jna.jar包
3.以下是一个jna的小例子
import com.sun.jna.Library;import com.sun.jna.Native;
public class XXXJNA {
public interface XXXLib extends Library{
//调用linux下面的so文件
XXXLib INSTANCE = (XXXLib) Native.loadLibrary("example",XXXLib.class);
int Open(int number);
}
public int Open(int number){
return XXXLib.INSTANCE.Open(number);
}
public static void main(String[] args) {
try{
XXXJNA xJNA = new XXXJNA();
xJNA.Open(0);
}catch(Exception e){
e.printStackTrace();
}
}
}
jna调用方便,只要把相应的库文件放到指定目录即可(win中放在path下面,linux下放在
LD_LIBRARY_PATH下面),然后用上面的模板模仿即可。
E. linux系统下火狐浏览器安装flash插件失败这是什么问题啊急啊!!!
如果因为flash版本过低,或者其它flash的问题,导致网页加载不正常,网页视频不能看等情况的话
你可以使用电脑管家的电脑诊所来一键修复一下
注:腾讯电脑管家为Flash版本过低问题定制部分修复步骤,因为操作过于繁杂,故未全部列出。若问题仍未解决,建议点击本回答上侧的【立即修复】按钮,进行深度修复。
本回答如有不清楚或其他疑问,请继续追问
如果以后还有什么问题,欢迎您再来电脑管家企业平台咨询
F. linux环境下用火狐浏览器运行swf文件提示flash player版本低的问题
环境下更新火狐flash插件方法:
1、下载最新版install_flash_player_X_linux.tar.gz,解压后文件为libflashplayer.so。
2、将libflashplayer.so拷贝到/usr/lib/flash-plugin/下。若flash-plugin不存在则创建flash-plugin目录。
3然后执行:
sudo ln /usr/lib/flash-plugin/libflashplayer.so /usr/lib/mozilla/plugins/libflashplayer.so。
3、若是64位操作系统,下载对应的64位libflashplayer.so,然后拷贝到/usr/lib64/flash-plugin,执行
sudo ln /usr/lib64/flash-plugin/libflashplayer.so
/usr/lib/mozilla/plugins/libflashplayer.so。
G. 我装Oracle VM VirtualBox,用的是linux-ubuntu,但是装完之后,把ubuntu导入之后运行,不成功,提示如图,
朋友,电脑出现:内存不能为read,原因总结起来,有以下方面,偶尔出现,点:取消,即可!
(答案原创,本答案原作者:力王历史)
1.电脑中了木马或者有病毒在干扰!
试试:杀毒软件,360安全卫士+360杀毒双引擎版,或者金山卫士+金山毒霸,
建议:修复“高危”和“重要”漏洞!使用“木马云查杀”和“360杀毒”,
“全盘扫描”和“自定义扫描”病毒和木马,删除后,重启电脑!
开机后,点开“隔离|恢复”,找到木马和病毒,彻底删除文件!
2.如果第1种方法不行,打开:“360安全卫士”,“木马查杀”里的:“360系统急救箱”!
先“开始急救”,查杀完毕,删除“可疑启动项”和木马,再重启电脑!
然后点开“文件恢复”区,找到“可疑自启动项”和木马,点“彻底删除”!
再点开“系统修复”,“全选”,再点“立即修复”!网络修复,立即修复,重启电脑!
3.用“360安全卫士”,“系统修复”,一键修复!再:“清理插件”,立即扫描,立即清理:恶评插件!
4.你下载的“播放器”,或“聊天软件”,或“IE浏览器”,或者“驱动”,或
“游戏”的程序不稳定,或者“版本太旧”!建议卸掉,下载新的,或将其升级
为“最新版本”!
5.软件冲突,你安装了两款或两款以上的同类软件(如:两款播放器,两款
qq,或多款浏览器,多款杀毒软件,多款网游等等)!它们在一起不“兼容”,
卸掉“多余”的那一款!
6.卸载方法:你在电脑左下角“开始”菜单里找到“强力卸载电脑上的软件”,找到多余的那款卸掉! 卸完了再“强力清扫”!
或者“360安全卫士”,“软件管家”,点开,第4项:“软件卸载”,点开,找
到“多余”和“类似”的软件卸载!如:“播放器”,点开,留下“暴风”,卸载“快播”!如:“下载”:点开,留下“迅雷”,卸载“快车”!(看准了再卸,别把有用的卸了)
7.如果还是不行,去网上下载一个“read修复工具”,修复试试!
8.再不行,重启电脑,开机后按“F8”,回车,回车,进到“安全模式”里,“高级启动选项”,找到:“最后一次正确配置”,按下去试试,看看效果如何!
9.再不行,开始菜单,运行 ,输入cmd, 回车,在命令提示符下输入(复制即可) :
for %1 in (%windir%\system32\*.ocx) do regsvr32 /s %1
粘贴,回车,再输入:
for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1
回车!直到屏幕滚动停止为止,重启电脑!
10.实在不行就“一键还原”系统或“重装系统”!
如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
vaela
H. ocx可以在linux下运行么
不能用,ocx是windows用的
I. linux中.so后缀的文件怎么使用
在WINDOWS系统中有很多的动态链接库(以.DLL为后缀的文件,DLL即Dynamic Link Library)。这种动态链接库,和静态函数库不同,它里面的函数并不是执行程序本身的一部分,而是根据执行程序需要按需装入,同时其执行代码可在多个 执行程序间共享,节省了空间,提高了效率,具备很高的灵活性。同样,LINUX的也具备类似的动态链接库,而且为数不少。在/lib目录下,就有许多以.so作后缀的文件,这就是LINUX系统应用的动态链接库,只不过与WINDOWS叫法不同,它叫so,即Shared Object,共享对象。(在LINUX下,静态函数库是以.a作后缀的) X-WINDOW作为LINUX下的标准图形窗口界面,它本身就采用了很多的动态链接库(在/usr/X11R6/lib目录下),以方便程序间的共享, 节省占用空间。flash只是一个插件,在windows中就是一个ocx的链接库方式(和dll略有不同),因此linux中一旦你了一个共享函数库,你还需要安装它。其实简单的方法就是拷贝
你的库文件到指定的标准的目录(例如/usr/lib),然后运行ldconfig。
如果你没有权限去做这件事情,例如你不能修改/usr/lib目录,那么
你就只好通过修改你的环境变量来实现这些函数库的使用了。首先,
你需要创建这些共享函数库;然后,设置一些必须得符号链接,特别
是从soname到真正的函数库文件的符号链接,简单的方法就是运行ldconfig:
ldconfig -n directory_with_shared_libraries
然后你就可以设置你的LD_LIBRARY_PATH这个环境变量,它是一个以逗号
分隔的路径的集合,这个可以用来指明共享函数库的搜索路径。例如
,使用bash,就可以这样来
启动一个程序my_program:
LD_LIBRARY_PATH=.LD_LIBRARY_PATH my_program
J. C++ 封装OCX怎么提供对外接口
C一般不能直接调用C++函数库,需要将C++库封装成C接口后,才可以使用C调用。
下面举例,说明一个封装策略:
//code in add.cxx
#include "add.h"
int sample::method()
{
cout<<"method is called!\n";
}
//code in add.h
#include
using namespace std;
class sample
{
public:
int method();
};
将上面的两个文件生成动态库libadd.so放到 /usr/lib目录下,编译命令如下:
sudo g++ -fpic -shared -g -o /usr/lib/libadd.so add.cxx -I ./
由于在C中不能识别类,所以要将上面类的成员函数,要封装成C接口函数才能被调用。下面进行封装,将输出接口转换成C接口。
//code in mylib.cxx
#include "add.h"
#ifndef _cplusplus
#define _cplusplus
#include "mylib.h"
#endif
int myfunc()
{
sample ss;
ss.method();
return 0;
}
//code in mylib.h
#ifdef _cplusplus
extern "C"
{
#endif
int myfunc();
#ifdef _cplusplus
}
#endif
在linux下,gcc编译器并没用变量_cplusplus来区分是C代码还是C++ 代码(没有宏定义),如果使用gcc编译器,这里我们可以自己定义一个变量_cplusplus用于区分C和C++代码,所以在mylib.cxx中定义 了一个变量_cplusplus用于识别是否需要“extern "C"”将函数接口封装成C接口。但是如果使用g++编译器则不需要专门定义_cplusplus,编译命令如下:
g++ -fpic -shared -g -o mylib.so mylib.cxx -la -I ./
main.c
#include
#include
#include "mylib.h"
int
main()
{
int (*dlfunc)();
void *handle; //定义一个句柄
handle = dlopen("./mylib.so", RTLD_LAZY);//获得库句柄
dlfunc = dlsym(handle, "myfunc"); //获得函数入口
(*dlfunc)();
dlclose(handle);
return 0;
}
编译命令如下:
gcc -o main main.c ./mylib.so -ldl
下面就可以执行了。
需要说明的是,由于main.c 和 mylib.cxx都需要包含mylib.h,并且要将函数myfunc封装成C接口函数输出需要“extern "C"”,而C又不识别“extern "C"”,所以需要定义_cplusplus来区别处理mylib.h中的函数myfunc。
在main.c的main函数中直接调用myfunc()函数也能执行,这里介绍的是常规调用库函数的方法。