导航:首页 > 源码编译 > 二次编译器

二次编译器

发布时间:2023-05-15 06:56:19

❶ 请教VS2012编译器二次开发CAD的问题

VS2010和VS2012或者sv2008和VS2010,高版本VS编译都会出配锋现,使用VS2008的D:\Program Files\Microsoft Visual Studio 9.0\VC\bin目录下的cvtres.exe替换到VS2010版本VS目录下再编译成功。
如果不行再用以下操作
上网搜索发现是嵌入清单的问题,于是对该工程以及所有依赖工程进行如下操作右键->工程属性->配置属源伏性-> 清单工具->输入和输出->嵌入清单,选择[否]
VS2010 2012CLR更换NET版本不像C#可以项目属性直接更改,需要修改 *.vcxproj里面 <PropertyGroup Label="Globals">节点添加以下内容
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
VS2012使用VS2010编译雹卖携vc++项目以支持XP系统运行,项目属性 常规平台工具集选择Visual Studio 2010 (v100),必须同时安装VS2010 2012

javastring怎么赋值

Java是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。

任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标肢闷扮设置在家用电器等小型系统的罩源程序语言,应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展,Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

Java编程语言的风格十分接近C语言。继承了C语言面向对象技术的核心,Java舍弃了C语言中容易引起错误的指针,改以引用取代,同时移除原C与原来运算符重载,也移除多重继承特性,改用接口取代,增加垃圾回收器功能。在JavaSE1.5版本中引入了泛型编程、类型安全的枚举、不定长参数和自动装/拆箱特性。太阳微系统对Java语言的解释是:“Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言”

Java不同于一般的编译语言或直译语言。它首先将源代码编译成字节码,然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编写,到处运行”的跨平台特性。在早期JVM中,这在一定程度上降低了Java程序的运行效率。但在J2SE1.4.2发布后,Java的运行速度有了大幅提升。

与传统类型不同,Sun公司在推出Java时就将其作为开放的技术。全球数以万计的Java开发公司被要求所设计的Java软件必须相互兼容。“Java语言靠群体的力量而非公司的力量”是Sun公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注历灶重精英和封闭式的模式完全不同,此外,微软公司后来推出了与之竞争的.NET平台以及模仿Java的C语言。后来Sun公司被甲骨文公司并购,Java也随之成为甲骨文公司的产品。

现时,移动操作系统android大部分的代码采用Java编程语言编程。

早期的Java

Java的发明人詹姆斯·高斯林

Duke,Java语言的吉祥物

语言最开始只是Sun计算机(Sun)公司在1990年12月开始研究的一个内部项目。Sun计算机公司的一个叫做帕特里克·诺顿的工程师被公司自己开发的C和C语言编译器搞得焦头烂额,因为其中的API极其难用。帕特里克决定改用NeXT,同时他也获得了研究公司的一个叫做“Stealth计划”的项目的机会。

“Stealth计划”后来改名为“Green计划”,詹姆斯·高斯林和麦克·舍林丹也加入了帕特里克的工作小组。他们和其他几个工程师一起在加利福尼亚州门罗帕克市沙丘路的一个小工作室里面研究开发新技术,瞄准下一代智能家电(如微波炉)的程序设计,Sun公司预料未来科技将在家用电器领域大显身手。团队最初考虑使用C语言,但是很多成员包括Sun的首席科学家比尔·乔伊,发现C和可用的API在某些方面存在很大问题。

工作小组使用的是嵌入式系统,可以用的资源极其有限。很多成员发现C太复杂以至很多开发者经常错误使用。他们发现C缺少垃圾回收系统,还有可移植的安全性、分布程序设计、和多线程功能。最后,他们想要一种易于移植到各种设备上的平台。

根据可用的资金,乔伊决定开发一种集C语言和Mesa语言大成的新语言,在一份报告上,乔伊把它叫做“未来”,他提议Sun公司的工程师应该在C的基础上,开发一种面向对象的环境。最初,高斯林试图修改和扩展C的功能,他自己称这种新语言为C--,但是后来他放弃了。他将要创造出一种全新的语言,被他命名为“Oak”(橡树),以他的办公室外的橡树命名。

就像很多开发新技术的秘密工程一样,工作小组没日没夜地工作到了1993年的夏天,他们能够演示新平台的一部分了,包括Green操作系统,Oak的程序设计语言,类库及其硬件。最初的尝试是面向一种类PDA设备,被命名为Star7,这种设备有鲜艳的图形界面和被称为“Duke”的智能代理来帮助用户。1992年12月3日,这台设备进行了展示。

同年11月,Green计划被转化成了“FirstPerson有限公司”,一个Sun公司的全资子公司,团队也被重新安排到了帕洛阿尔托。FirstPerson团队对建造一种高度交互的设备感兴趣,当时代华纳发布了一个关于电视机顶盒的征求提议书时(Requestforproposal),FirstPerson改变了他们的目标,作为对征求意见书的响应,提出了一个机顶盒平台的提议。但是有线电视业界觉得FirstPerson的平台给予用户过多的控制权,因此FirstPerson的投标败给了SGI。与3DO公司的另外一笔关于机顶盒的交易也没有成功,由于他们的平台不能在电视工业产生任何效益,公司被并回Sun公司。

Java和互联网

1994年6月,在经历了一场历时三天的脑力激荡的讨论后,约翰·盖吉、詹姆斯·高斯林、比尔·乔伊、帕特里克·诺顿、韦恩·罗斯因和埃里克·斯库米,团队决定再一次改变了努力的目标,这次他们决定将该技术应用于万维网。他们认为随着Mosaic浏览器的到来,因特网正在向同样的高度互动的远景演变,而这一远景正是他们在有线电视网中看到的。作为原型,帕特里克·诺顿写了一个小型万维网浏览器,WebRunner,后来改名为HotJava[12]。

1994年10月,HotJava和Java平台为公司高层进行演示。1994年,Java

1.0a版本已经可以提供下载,但是Java和HotJava浏览器的第一次公开发布却是在1995年3月23日SunWorld大会上进行的。升阳公司的科学指导约翰·盖吉宣告Java技术。这个发布是与网景公司的执行副总裁马克·安德森的惊人发布一起进行的,宣布网景将在其浏览器中包含对Java的支持。1996年1月,升阳公司成立了Java业务集团,专门开发Java技术。

Java和“Java”

由于商标搜索显示,Oak已被一家显示卡制造商注册。于是同年,Oak被改名为Java。当使用十六进制编辑器打开由Java源代码编译出的二进制文件(.class文件)的话,最前面的32位将显示为CAFEBABE,即词组“CAFEBABE”(咖啡屋宝贝)。

Java近况

一套Java编辑器软件

J2SE环境与CDC的关连

JVM的所在角色

JSPX网页的概念

在流行几年之后,Java在浏览器中的地位被逐步侵蚀。它在简单交互性动画方面的用途已经完全被Adobe公司的Flash排挤,2005年Java倾向只被用于雅虎游戏那样的更为复杂的应用程序。Java同时遭受到来自微软的反对,他们决定在新版本的InternetExplorer和Windows中不再附带Java平台。

与此相反。在万维网的服务器端和手持设备上,Java变得更加流行。很多网站在后端使用JSP和其他的Java技术。

在桌面系统上,独立的Java程序还是相对少见,这是因为Java平台的运行开销较大,而许多人的电脑上没有安装Java,由于网络带宽在以前较小,下载Java曾经是个耗时的事情。但是随着计算机计算能力、网络带宽在10年中获取了很大的进步,同时虚拟机和编译器的质量得到了提高,许多应用程序得到了广泛的使用,包括:

开源软件:

NetBeans和Eclipse等软件开发工具

Android操作系统

JEdit

AzureusBitTorrent客户端。

JNode操作系统

Apache软件基金会的Ant、Derby、Hadoop、Jakarta、POI和Tomcat

JBoss和GlassFish应用服务器

商业软件:

EIOffice(永中Office)

Minecraft

纯Java3D游戏合金战士Chrome

IBMWebsphere、ColdFusion和WebLogic

IntelliJIDEA

还有许多用Java写的软件,可以在www.java找到。在以下网页可以看到非常多用Java写的程序:java.sun/procts/下面有大量用JavaSwing开发的桌面Java程序java.sun/procts/jfc/tsc/sightings/目前Java提供以下三个版本:

JavaPlatform,EnterpriseEdition(JavaEE:Java平台企业版)

JavaPlatform,StandardEdition(JavaSE:Java平台标准版)

JavaPlatform,MicroEdition(JavaME:Java平台微型版)

JavaPlatform,CardEdition

Java开放源代码项目

2006年SUN在JavaOne公布Java开放源代码项目,并推出OpenJDK项目。[13]Java虚拟机、Java编译器和Java类库以GNU通用公共许可证公开。

版本历史

主条目:Java版本历史

1995年5月23日,Java语言诞生

1996年1月,第一个JDK-JDK1.0诞生

1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入JAVA技术

1996年9月,约8.3万个网页应用了JAVA技术来制作

1997年2月18日,JDK1.1发布

1997年4月2日,JavaOne会议召开,参与者逾一万人,创当时全球同类会议规模之纪录

1997年9月,社区成员超过十万

1998年2月,JDK1.1被下载超过2,000,000次

1998年12月8日,JAVA2企业平台J2EE发布

1999年6月,SUN公司发布Java的三个版本:标准版(J2SE)、企业版(J2EE)和微型版(J2ME)

2000年5月8日,JDK1.3发布

2000年5月29日,JDK1.4发布

2001年6月5日,NOKIA宣布,到2003年将出售1亿部支持Java的手机

2001年9月24日,J2EE1.3发布

2002年2月26日,J2SE1.4发布,自此Java的计算能力有了大幅提升

2004年9月30日18:00PM,J2SE1.5发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE1.5更名为JavaSE5.0

2005年6月,JavaOne大会召开,SUN公司公开JavaSE6。此时,Java的各种版本已经更名,以取消其中的数字“2”:J2EE更名为JavaEE,J2SE更名为JavaSE,J2ME更名为JavaME

2006年12月,SUN公司发布JRE6.0

2009年12月,SUN公司发布JavaEE6

2010年11月,由于Oracle公司对于Java社区的不友善,因此Apache扬言将退出JCP[14]

2011年7月28日,Oracle公司发布JavaSE7

2014年3月18日,Oracle公司发表JavaSE8

语言特性

Java之所以被开发,是要达到以下五个目的:

应当使用面向对象程序设计方法学

应当允许同一程序在不同的计算机平台执行

应当包括内建的对计算机网络的支持

应当被设计成安全地执行远端代码

应当易于使用,并借鉴以前那些面向对象语言(如C)的长处。

Java技术主要分成几个部分:Java语言、Java运行环境、类库。一般情况下说Java时并不区分指的是哪个部分。

Java在1.5版本时,做了重大改变,Sun公司并1.5版本重命名为Java5.0。

面向对象

Java的特点之一就是面向对象,是程序设计方法的一种。“面向对象程序设计语言”的核心之一就是开发者在设计软件的时候可以使用自定义的类型和关联操作。代码和数据的实际集合体叫做“对象”。一个对象可以想象成绑定了很多“行为(代码)”和“状态(数据)”的物体。对于数据结构的改变需要和代码进行通信然后操作,反之亦然。面向对象设计让大型软件工程的计划和设计变得更容易管理,能增强工程的健康度,减少失败工程的数量。

跨平台性

Java语言的第二个特性就是跨平台性,也就是说使用Java语言编写的程序可以在编译后不用经过任何更改,就能在任何硬件设备条件下运行。这个特性经常被称为“一次编译,到处运行”。

执行Java应用程序必须安装爪哇运行环境(JavaRuntimeEnvironment,JRE),JRE内部有一个Java虚拟机(JavaVirtualMachine,JVM)以及一些标准的类库(ClassLibrary)。通过JVM才能在电脑系统执行Java应用程序(JavaApplication),这与.NetFramework的情况一样,所以电脑上没有安装JVM,那么这些程序将不能够执行。

实现跨平台性的方法是大多数编译器在进行Java语言程序的编码时候会生成一个用字节码写成的“半成品”,这个“半成品”会在Java虚拟机(解释层)的帮助下运行,虚拟机会把它转换成当前所处硬件平台的原始代码。之后,Java虚拟机会打开标准库,进行数据(图片、线程和网络)的访问工作。主要注意的是,尽管已经存在一个进行代码翻译的解释层,有些时候Java的字节码代码还是会被JIT编译器进行二次编译。

有些编译器,比如GCJ,可以自动生成原始代码而不需要解释层。但是这些编译器所生成的代码只能应用于特定平台。并且GCJ目前只支持部分的JavaAPI。

甲骨文公司对于Java的许可是“全兼容的”,这也导致了微软和升阳关于微软的程序不支持RMI和JNI接口、并且增加特性为己所用的法律争端。升阳最终赢得了官司,获得了大约两千万美元的赔偿,法院强制要求微软执行升阳公司关于Java的许可要求。作为回应,微软不再在Windows系统中捆绑Java,最新的Windows版本,WindowsVista和InternetExplorer7.0版本也不再提供对于Java应用程序和控件的支持。但是升阳公司和其他使用Java运行时系统的公司在Windows操作系统下对用户提供无偿的第三方插件和程序支持。

Java语言使用解释层最初是为了轻巧性。所以这些程序的运行效率比C语言和C要低很多,用户也对此颇有微词。很多最近的调查显示Java的程序运行速度比几年前要高出许多,有些同样功能的程序的效率甚至超过了C和C语言编写的程序[来源请求]。

Java语言在最开始应用的时候是没有解释层的,所有需要编译的代码都直接转换成机器的原始代码。这样做的后果就是获得了最佳的性能,但是程序臃肿异常。从JIT技术开始,Java的程序都经过一次转换之后才变成机器码。很多老牌的第三方虚拟机都使用一种叫做“动态编译”的技术,也就是说虚拟机实时监测和分析程序的运行行为,同时选择性地对程序所需要的部分进行编译和优化。所有这些技术都改善了代码的运行速度,但是又不会让程序的体积变得失常。

程序的轻便性事实上是软件编写很难达到的一个目标,Java虽然成功地实现了“一次编译,到处运行”,但是由于平台和平台之间的差异,所编写的程序在转换代码的时候难免会出现微小的、不可察觉的错误和意外。有些程序员对此非常头疼,他们嘲笑Java的程序不是“一次编译,到处运行”,而是“一次编译,到处调试”。以Java

AWT为例,早期Java

AWT内提供的按钮、文字区等均是以计算机系统所默认的样式而显示。这令Java程序在有些没有提供图案的计算机系统产生错误(在Microsoft

Windows设有窗口管理器,在一些Linux则没有)。后来SUN公司针对JavaAWT一些问题而推出Java

Swing。

平台无关性让Java在服务器端软件领域非常成功。很多服务器端软件都使用Java或相关技术建立。

自动垃圾回收(GarbageCollection)

C语言被用户诟病的原因之一是大多数C编译器不支持垃圾收集机制。通常使用C编程的时候,程序员于程序中初始化对象时,会在主机内存堆栈上分配一块内存与地址,当不需要此对象时,进行析构或者删除的时候再释放分配的内存地址。如果对象是在堆栈上分配的,而程序员又忘记进行删除,那么就会造成内存泄漏(Memory

Leak)。长此以往,程序运行的时候可能会生成很多不清除的垃圾,浪费了不必要的内存空间。而且如果同一内存地址被删除两次的话,程序会变得不稳定,甚至崩溃。因此有经验的C程序员都会在删除之后将指针重置为NULL,然后在删除之前先判断指针是否为NULL。

C中也可以使用“智能指针”(SmartPointer)或者使用C托管扩展编译器的方法来实现自动化内存释放,智能指针可以在标准类库中找到,而C

(题主你怎么可以问这么沙比的问题!)

托管扩展被微软的Visual

C

7.0及以上版本所支持。智能指针的优点是不需引入缓慢的垃圾收集机制,而且可以不考虑线程安全的问题,但是缺点是如果不善使用智能指针的话,性能有可能不如垃圾收集机制,而且不断地分配和释放内存可能造成内存碎片,需要手动对堆进行压缩。除此之外,由于智能指针是一个基于模板的功能,所以没有经验的程序员在需要使用多态特性进行自动清理时也可能束手无策。

Java语言则不同,上述的情况被自动垃圾收集功能自动处理。对象的创建和放置都是在内存堆栈上面进行的。当一个对象没有任何引用的时候,Java的自动垃圾收集机制就发挥作用,自动删除这个对象所占用的空间,释放内存以避免内存泄漏。

注意程序员不需要修改finalize方法,自动垃圾收集也会发生作用。但是内存泄漏并不是就此避免了,当程序员疏忽大意地忘记解除一个对象不应该有的引用时,内存泄漏仍然不可避免。

不同厂商、不同版本的JVM中的内存垃圾回收机制并不完全一样,通常越新版本的内存回收机制越快,IBM、BEA、SUN等等开发JVM的公司都曾宣称过自己制造出了世界上最快的JVM[来源请求],JVM性能的世界纪录也在不断的被打破并提高。

IBM有一篇有关Java内存回收机制比不激活垃圾收集机制的C内存处理快数倍的技术文章[15],而着名的Java技术书籍《Java编程思想》(ThinkinginJava)也有一段论述Java内存及性能达到甚至超过C的章节[16]。

基本语法

编写Java程序前应注意以下几点:

大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的。

类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如。

方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写,例如。

源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记Java是大小写敏感的),文件名的后缀为.java。(如果文件名和类名不相同则会导致编译错误)。

主方法入口:所有的Java程序由publicstaticvoidmain(String[]args)方法开始执行。

Java关键字

关键字下面列出了Java关键字。这些关键字不能用于常量、变量、和任何标识符的名称。

关键字

描述

abstract

抽象方法,抽象类的修饰符

assert

断言条件是否满足

continue

不执行循环体剩余部分

default

switch语句中的默认分支

do-while

循环语句,循环体至少会执行一次

double

64-bit双精度浮点数

else

if条件不成立时执行的分支

enum

枚举类型

extends

表示一个类是另一个类的子类

final

表示定义常量

finally

无论有没有异常发生都执行代码

float

32-bit单精度浮点数

for

for循环语句

goto

用于流程跳转(不可用,意即不可随意跳转)

if

条件语句

implements

表示一个类实现了接口

import

导入类

instanceof

测试一个对象是否是某个类的实例

int

32位整型数

interface

接口,一种抽象的类型,仅有方法和常量的定义

long

64位整型数

native

表示方法用非java代码实现

new

分配新的类实例

package

一系列相关类组成一个包

private

表示私有字段,或者方法等,只能从类内部访问

protected

表示保护类型字段

public

表示共有属性或者方法

return

方法返回值

short

16位数字

static

表示在类级别定义,所有实例共享的

strictfp

浮点数比较使用严格的规则

super

表示基类

switch

选择语句

表示同一时间只能由一个线程访问的代码块

this

调用当前实例或者调用另一个构造函数

throw

抛出异常

throws

定义方法可能抛出的异常

transient

修饰不要序列化的字段

try

表示代码块要做异常处理

void

标记方法不返回任何值

volatile

标记字段可能会被多个线程同时访问,而不做同步

while

while循环

注释

注释作用:标识程序是干什么的,以及它是如何构建的。注释帮助程序员进行相互沟通以及理解程序。注释不是程序设计语言,所以编译器编译程序时忽略它们。

接口和类别

Java自带了创建接口的类别,可以这样使用:

publicinterfaceDeleteab

❸ AutoCAD二次开发工具有哪些

下面是我找到的资料,希望对你有用。AutoCAD二次开发工具综述
AutoCAD是目前微机上应用最为广泛的通用的交互式计算机辅助绘图与设计软件包。AutoCAD的强大生命力在于它的通用性、多种工业标准和开放的体系结构。其通用性使得它在机械、电子、航空、轮船、建筑、服装等领域得到了极为广泛的应用。但是,不同的行业标准使得各领域在使用AutoCAD的过程中均需根据自身特点进行定制或开发。Autodesk公司为满足广大用户的需求,自AutoCAD v2.18版至AutoCAD 2000的短短十几年间,就相继推出了三代二次开发工具,如图1示。可以说,AutoCAD的通用性为其二次开发提供了必要条件,而AutoCAD开放的体系结构则使其二次开发成为可能。
下面对AutoCAD的三代开发工具进行浅析。
一、第一代开发工具——AutoLISP
AutoLISP是1986年随AutoCAD v2.18提供的二次开发工具。它是一种人工智能语言,是嵌入AutoCAD内部的COMMON LISP的一个子集。在AutoCAD的二次开发工具中,它是唯一的一种解释型语言。使用AutoLISP可直接调用几乎所有的AutoCAD命令
AutoLISP语言最典型的应用之一是实现参数化绘图程序设计,包括尺寸驱动程序和鼠标拖动程序等。另一个典型应用就是驱动AutoCAD提供PDB模块构成DCL(Dialog Control Language)文件创建自己的对话框。
AutoLISP具有以下优点:(1)语言规则十分简单,易学易用;(2)直接针对AutoCAD,易于交互;(3)解释执行,立竿见影。
AutoLISP的缺点是:(1)功能单一,综合处理能力差;(2)解释执行,程序运行速度慢;(3)缺乏很好的保护机制,源程序保密性差;(4)LISP用表来描述一切,并不能很好地反映现实世界和过程,跟人的思维方式也不一致;(5)不能直接访问硬件设备、进行二进制文件的读写。
AutoLISP的这些特点,使其仅适合于有能力的终端用户完成一些自己的开发任务。
二、第二代开发工具——ADS
ADS(AutoCAD Development System)是AutoCAD R11开始支持的一种基于C语言的灵活的开发环境。ADS可直接利用用户熟悉的C编译器,将应用程序编译成可执行文件后在AutoCAD环境下运行,从而既利用了AutoCAD环境的强大功能,又利用了C语言的结构化编程、运行效率高的优势。
与AutoLISP 相比,ADS优越之处在于:(1)具备错综复杂的大规模处理能力;(2)编译成机器代码后执行速度快;(3)编译时可以检查出程序设计语言的逻辑错误;(4)程序源代码的可读性好于AutoLISP。 而其不便之处在于:(1)C语言比LISP语言难于掌握和熟练应用;(2)ADS程序的隐藏错误往往导致AutoCAD,乃至操作系统的崩溃;(3)需要编译才能运行,不易见到代码的效果;(4)同样功能ADS程序源代码比AutoLISP代码长很多。
三、第三代开发工具——Visual LISP,ARX及基于ActiveX Automation技术的VBA等
1.Visual LISP(VLISP)
VLISP是AutoLISP的换代产品。它与AutoLISP完全兼容,并提供它所有的功能,是新一代的AutoCAD LISP语言。VLISP对语言进行了扩展,可以通过Microsoft ActiveX Automation接口与对象交互。同时,通过实现反应器函数,还扩展AutoLISP响应事件的能力。作为开发工具,VLISP提供了一个完整的集成开发环境(IDE),包括编译器、调试器和其他工具,可以提高二次开发的效率 。另外,VLISP还提供了工具用于发布独立的应用程序。
2.ARX
ARX(AutoCAD Runtime eXtension)是AutoCAD R13之后推出的一个以C++语言为基础的面向对象的开发环境和应用程序接口。ARX程序本质上Windows动态连接库(DLL)程序,与AutoCAD共享地址空间,直接调用AutoCAD的核心函数,可直接访问AutoCAD数据库的核心数据结构和代码,以便能够在运行期间扩展AutoCAD固有的类及其功能,创建能够全面享受AutoCAD固有命令特权的新命令。ARX程序与AutoCAD、Windows之间均采用Windows消息传递机制直接通讯。
AutoLISP、ADS、ARX都是AutoCAD提供的内嵌式编程语言。AutoLISP和ADS都是通过内部进程通讯(IPC)来和AutoCAD通讯,它们与AutoCAD是相互分离的过程,而ARX以DLL形式与AutoCAD共享地址空间,如图2示。因此,与前两者相比,其速度更快、运行更稳定、更简单。由于是在Windows及VC++编程环境里运行,所以,对开发者的编程能力要求较高。
ObjectARX应用程序以C++为基本开发语言,具有面向对象编程方式的数据可封装性、可继承性及多态性的特点,用其开发的CAD软件具有模块性好、独立性强、连接简单、使用方便、内部功能高效实现以及代码可重用性强等特点,并且支持MFC基本类库,能简洁高效地实现许多复杂功能。
这里顺便提一下ADSRX。AutoCAD R14的开发环境ADSRX是ARX的一个子集,它等效于ADS。使用ADSRX,能够用C语言编写基于AutoCAD的程序,也能很方便地将ADS程序移植为ARX程序。
图3比较了AutoLISP、ADS、ADSRX和ARX的关于速度、暴露性、功能和要求使用每个API的编程经验等方面的编程接口。“暴露性”参数显示了用户编程错误的可能严重性。尽管ARX接口是四个API中最强有力的,它也具有产生严重编程错误的最大潜在性,如破坏AutoCAD数据结构等。其它编程环境要求较少的编程经验,但提供的功能和范围也较小。
可以说,AutoLISP着眼于应用程序的交互性,ADS C/C++着眼于应用程序的综合性,而ARX则着眼于应用程序的智能性。
3.基于ActiveX Automation技术的VBA等开发工具
ActiveX Automation是一套微软标准,以前称为OLE Automation技术。该标准允许通过外显的对象由一个Windows应用程序控制另一个Windows应用程序,这也是面向对象编程技术的精髓所在。AutoCAD从R14开始增加了作为ActiveX Automation服务器应用程序的功能,使得许多面向对象编译语言和应用程序可以通过ActiveX与AutoCAD进行通信,并操纵AutoCAD的许多功能,如图4示。
ActiveX Automation服务器应用程序是通过自身对象的属性、方法、事件外显其功能。对象是服务器应用程序的简单而抽象的代表。不管是用VB、VC、OFFICE VBA等从外部,还是用AutoCAD VBA从内部对AutoCAD进行二次开发,都是通过调用AutoCAD的对象体系结构来进行的。AutoCAD 2000 ActiveX Automation技术将AutoCAD 2000的各种功能封装在AutoCAD ActiveX对象中,供编程使用。AutoCAD 2000中提供的所有对象组成一个树形结构,如图5示,最高层是Application对象,其它对象都是它的后代。为了得到一个特定的对象,必须从Application对象对其子孙进行遍历,直到找到该特定的对象。
ActiveX Automation技术的完全面向对象化编程的特点,使其开发环境具备了强大的开发能力和简单易用的优良特点,开发工具的选择也具有很大的灵活性。所以,利用ActiveX Automation技术,是极具潜力的一种开发手段。
四、结束语
以上对AutoCAD的三代开发工具分别作了简要介绍。从中可以看出,AutoCAD的二次开发工具真是“长江后浪推前浪,一代更比一代强”。目前,第一代的AutoLISP已能被第三代的VLISP完全替代;第二代的ADS在AutoCAD 2000中已不再支持;所以,第三代开发工具将成为今后AutoCAD二次开发的必然选择。而在第三代工具中具体选择哪一种,笔者认为,主要还应根据用户应用程序的需要和开发人员的编程经验。
按照笔者的观点,就目前在AutoCAD 中的状况而言:
1)Visual LISP
适于描述人机交互操作的过程,善于编写模拟设计师思路的专业设计程序。对于各种用户输入的接收、错误识别与恢复等操作具有相当优秀的功能,尤其是善于充分发挥CAGD功能的巨大作用,充分利用交互操作的技巧。相比之下,具有最多样式的程序运行模式。不同版本的程序,相比之下,具有最好的兼容性,甚至可以直接运行。
这种程序设计可以找到大的资源,包括书籍、程序实例、英特网上的资源和技术交流。
过去AutoLISP 最大的不足是不能编译,较大的程序包没有“工程(Project)”的概念,这无疑对较大规模的程序设计造成了困难。而这些现在已经被 VLISP 圆满解决了,编译成VLX 的老的AutoLISP 程序,其效率也会比解释运行条件下提高5~8倍。
2)ADS
曾经是在 AutoLISP 之后的一种程序设计模式,在 R14 之前的AutoLISP 程序虽然是解释运行,仍比ADS程序快一些,因为实际上ADS是用AutoLISP与AutoCAD交互。从AutoCAD R14起,Autodesk已经不再支持和发展 ADS程序设计模式,同时却增加了Visual LISP,以进一步提高AutoLISP 的整体性能,同时用ObjectARX取代了ADS。
3)VBA
自 R14开始嵌套在AutoCAD 之中的程序设计方法,VBA是根据微软公司的规则,在每一个Windows下的应用软件都必须具有的功能。
其优点是可以很容易地使用Windows系统资源,使AutoCAD能容易地与其他Windows下的应用软件交互。VBA 对话框设计能力比DCL好得多,多图档环境下的应用程序也比也比VLISP提供了更多的支持。但由于它是使用ActiveX与AutoCAD交互,程序设计比较复杂。会成为与VLISP并列的另一种专业用户程序设计语言,不太容易学会。因为VBA并不就是VB,所以熟悉VB的人,在使用VBA作AutoCAD程序设计时,也需要新学大量的东西,只不过VBA的规则与VB充分相近。
在设计过程模拟类的程序设计中,VBA明显不如 AutoLISP那样顺利,毕竟 AutoLISP 脱胎于人工智能语言。另外,如果 VBA 作者因为“疏忽”,没有提供相应的方法和属性,老的AutoLISP能够访问的对象数据、能够激活的某些AutoCAD对话框,VBA却不能。VBA虽然不是编译运行,数据结构和程序写法却像ARX一样相当严格,这对于工程师来说,需要有一个适应过程,你只能按照VBA的可能去组织自己的数据,而不能像VLISP那样按照专业设计要求去创建数据结构。
比较明显的几个缺憾是:
VBA中不能像VLISP那样几乎随心所欲地使用AutoCAD命令,只能象脚本文件的模式,以字串方式向AutoCAD命令行发送一串响应,这个字串的内容也只好在自己的程序中生成和进行数据转换。这样,许多交互操作的技巧,在VBA中不能直接借用。
VBA是以对象作为数据处理的基本单元,在VLISP中堪称特色的CAGD程序设计技术,在VBA中则无法实现。因此像Trim、Extend、Dim-Diameter之类的命令都不能真正实施,要想完成这样的操作,相关数据只能在程序中自己计算。这样,程序设计就不能充分利用AutoCAD的操作技巧,必然复杂和罗嗦。放着AutoCAD优秀的数据库,却不能充分发挥它的作用;本来能用AutoCAD完成的动作,却要自己编程实现。这就是VBA最大的缺憾。
VBA 另外的问题是不能编译,源程序始终以相当容易接近的方式,暴露在最终用户面前。很容易由于用户的误操作,使曾经正常的应用程序出错甚至崩溃。这正好是老的 AutoLISP 的致命缺点,使用 VLISP 的程序包编译功能,目前还不能将 VBA 包装进去之后解决源代码加密的问题。VBA的源代码加密目前只有使用 PassWord。
VBA与Visual LISP 之间仅有比较简单的内部数据通道,例如处理简单的点位表。从这方面说,VBA的作者好像不太了解AutoCAD的特色功能,也不太了解用户们将会怎样使用AutoCAD进行自己的专业设计。
扩充VBA的功能可以用 VC++ / ARX 程序,但是相当复杂,对于一般工程师来说,很难掌握。对VBA的完善和扩充,只能等待Autodesk的工作结果。
4)ObjectARX
在Autodesk内部或增值软件开发商中使用。由于ARX是使用Visual C++作为基本程序设计语言,无论其效率、数据处理和软硬件的控制能力都是最好的,是唯一圆满地针对多图档环境的程序设计方法。是从根本上扩展 VLISP / VBA 的程序设计方法。
但是,与AutoCAD命令交互和对象数据库访问功能,ARX与VBA并没有实质性的区别,就是说,同样很难借用AutoCAD强大的CAGD功能和交互操作的技巧。另外,要想真正发挥这种开发模式的作用,对于程序设计者的要求(计算机专业知识、软件专业知识等等)也较高,而且程序运行风险较大。要求程序自己做好各种数据的测试,自己设计好各种条件下的出错处理和恢复,否则ARX 程序的崩溃常常会连带 AutoCAD、甚至操作系统一起崩溃。由于ARX技术是大部分开发商的工具,因此,真正有用的编程技巧也不太容易通过一般的交流得到。可见,这种开发模式不适于在专业设计工程师中间普及。
粗略地说:
ARX/VBA的特点在于以AutoCAD的对象、方法和属性为基本操作数据,适合于“构建”AutoCAD的功能。实际上,一个对AutoCAD的操作并不熟练的人,只要充分理解了AutoCAD的对象模型结构,也能写出操控AutoCAD的程序。就是说,这种程序设计模式,并不太依赖于程序设计者熟悉AutoCAD操作的程度如何。换句话说:对AutoCAD操作的熟练程度,对于ARX/VBA程序设计并没有明显的帮助。
而VLISP则是灵活而充分地使用AutoCAD的现有功能,适合于“组合使用”AutoCAD的现有功能。这样,程序设计着对AutoCAD操作的数量程度,就明显地影响着程序设计的结果。就是说,这种程序设计模式,将能充分利用程序设计着使用AutoCAD的经验和技巧。当然,用VLISP按照ARX/VBA的ActiveX模式写程序,也是可以的。在本书中有不少这样的实例。但是这不是VLISP的特长。

作为 CAD 系统,通常由三个层次的软件组合而成:
1)设计软件的底台:提供界面、环境、核心算法、数据库等基础设施。现在我们是在 AutoCAD这个底台上进行工作。
2)设计支持软件,提供与设计需要相关的,比较专业的支持软件:国标图库、通用设计工具、设计手册等等。这些软件多数是由增值软件开发商完成的。
3)专业设计软件,提供窄范围、大深度的专业设计自动化或者辅助系统:例如:发动机装配工具设计、胶印机控制凸轮设计、组合机主轴箱设计等等。
实际上,CAD系统能否真正体现出它的存在价值,最明显的标志就是上述专业设计软件。这些软件真正起到了“设计”的作用。实践证明,在某个专业性很强的设计上,它确实能够替代工程师!
对于1)和2),可以由一些不必很了解设计,而软件知识较多的人来写。当然,应当由现场工程师进行测评,防止写成“学院派”的设计支持软件。而对于3),就只能由设计师直接参与来写,这样的题目范围较小,几乎是开发商永远的“盲区”。由于专业性太强,知识结构太偏,对于工科大学毕业,没有在这个行业里,做过几个真正的设计的人,很难听懂专业设计师的叙述,要求他完成这个程序,就太过分了。
可见,必须有一个能够被专业设计师所掌握,又能够发挥他们的长处(熟悉设计和交互操作),避开他们的短处(软件知识较少)的开发方法。这就是AutoLISP。
可以在AutoLISP程序中引用AutoCAD的几乎所有的功能,进行图形处理的自动化,尤其是较深层的应用~对象数据库的操作。
在Visual LISP的协助下,从对AutoCAD进行操作的功能上讨论,仅比ARX少几个功能:自定义AutoCAD对象、多图档的深入管理等。从目前的情况看,AutoLISP是AutoCAD中几乎所有的应用程序的“总管、大管家”,而且目前只有AutoLISP 表达式,才能以添加在脚本文件、对话框程序、菜单、甚至VBA程序的ThisDrawing.SendCommand …中,更可以直接用在AutoCAD的命令行中响应几乎所有的命令。
(5)其它性能
LISP是典型的结构化程序设计语言,AutoLISP是解释运行,源程序保密性差,巨量数据的复杂运算效率较低,文件管理功能简单,但可以在绝大多数源程序内容不变的条件下,用Visual LISP将其编译成VLX程序包或者FAS程序,这样处理之后的AutoLISP程序,将具有与ARX程序相同的高保密性能,也将具有比解释运行明显提高的运行效率。而且,AutoLISP程序设计的复杂程度和运行风险大大低与ARX,绝少在程序崩溃后连带AutoCAD崩溃。来源: http://www.jxcad.com.cn/read-htm-tid-92949.html

❹ 二次译码的工作原理

二次译码是编码的逆过程槐巧,它能将二进制码翻译成代铅配键表某一卖喊特定含义的信号.(即电路的某种状态)译码器:具有译码功能的逻辑电路称为译码器。

❺ android系统编译能用分布式编译吗

项目越来越大,每次需要重新编译整个项目都是一件很浪费时间的事情。Research了一下,找到以下可以帮助提高速度的方法,总结一下。
1. 使用tmpfs来代替部分IO读写
2.ccache,可以将ccache的缓存文件设置在tmpfs上,但是这样的话,每次开机后,ccache的缓存文件会丢失
3.distcc,多机器编译
4.将屏幕输出打印到内存文件或者/dev/null中,避免终端设备(慢速设备)拖慢速度。

tmpfs
有人说在Windows下用了RAMDisk把一个项目编译时间从4.5小时减少到了5分钟,也许这个数字是有点夸张了,不过粗想想,把文件放到内存上做编译应该是比在磁盘上快多了吧,尤其如果编译器需要生成很多临时文件的话。
这个做法的实现成本最低,在Linux中,直接mount一个tmpfs就可以了。而且对所编译的工程没有任何要求,也不用改动编译环境。
mount -t tmpfs tmpfs ~/build -o size=1G
用2.6.32.2的Linux Kernel来测试一下编译速度:
用物理磁盘:40分16秒
用tmpfs:39分56秒
呃……没什么变化。看来编译慢很大程度上瓶颈并不在IO上面。但对于一个实际项目来说,编译过程中可能还会有打包等IO密集的操作,所以只要可能,用tmpfs是有益无害的。当然对于大项目来说,你需要有足够的内存才能负担得起这个tmpfs的开销。
make -j
既然IO不是瓶颈,那CPU就应该是一个影响编译速度的重要因素了。
用make -j带一个参数,可以把项目在进行并行编译,比如在一台双核的机器上,完全可以用make -j4,让make最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源。
还是用Kernel来测试:
用make: 40分16秒
用make -j4:23分16秒
用make -j8:22分59秒
由此看来,在多核CPU上,适当的进行并行编译还是可以明显提高编译速度的。但并行的任务不宜太多,一般是以CPU的核心数目的两倍为宜。
不过这个方案不是完全没有cost的,如果项目的Makefile不规范,没有正确的设置好依赖关系,并行编译的结果就是编译不能正常进行。如果依赖关系设置过于保守,则可能本身编译的可并行度就下降了,也不能取得最佳的效果。
ccache
ccache工作原理:
ccache也是一个编译器驱动器。第一趟编译时ccache缓存了GCC的“-E”输出、编译选项以及.o文件到$HOME/.ccache。第二次编译时尽量利用缓存,必要时更新缓存。所以即使"make clean; make"也能从中获得好处。ccache是经过仔细编写的,确保了与直接使用GCC获得完全相同的输出。

ccache用于把编译的中间结果进行缓存,以便在再次编译的时候可以节省时间。这对于玩Kernel来说实在是再好不过了,因为经常需要修改一些Kernel的代码,然后再重新编译,而这两次编译大部分东西可能都没有发生变化。对于平时开发项目来说,也是一样。为什么不是直接用make所支持的增量编译呢?还是因为现实中,因为Makefile的不规范,很可能这种“聪明”的方案根本不能正常工作,只有每次make clean再make才行。
安装完ccache后,可以在/usr/local/bin下建立gcc,g++,c++,cc的symbolic link,链到/usr/bin/ccache上。总之确认系统在调用gcc等命令时会调用到ccache就可以了(通常情况下/usr/local /bin会在PATH中排在/usr/bin前面)。
安装的另外一种方法:
vi ~/.bash_profile
把/usr/lib/ccache/bin路径加到PATH下
PATH=/usr/lib/ccache/bin:$PATH:$HOME/bin
这样每次启动g++的时候都会启动/usr/lib/ccache/bin/g++,而不会启动/usr/bin/g++
效果跟使用命令行ccache g++效果一样
这样每次用户登录时,使用g++编译器时会自动启动ccache
继续测试:
用ccache的第一次编译(make -j4):23分38秒
用ccache的第二次编译(make -j4):8分48秒
用ccache的第三次编译(修改若干配置,make -j4):23分48秒

看来修改配置(我改了CPU类型...)对ccache的影响是很大的,因为基本头文件发生变化后,就导致所有缓存数据都无效了,必须重头来做。但如果只是修改一些.c文件的代码,ccache的效果还是相当明显的。而且使用ccache对项目没有特别的依赖,布署成本很低,这在日常工作中很实用。
可以用ccache -s来查看cache的使用和命中情况:
cache directory /home/lifanxi/.ccachecache hit 7165cache miss 14283called for link 71not a C/C++ file 120no input file 3045files in cache 28566cache size 81.7 Mbytesmax cache size 976.6 Mbytes
可以看到,显然只有第二编次译时cache命中了,cache miss是第一次和第三次编译带来的。两次cache占用了81.7M的磁盘,还是完全可以接受的。
distcc
一台机器的能力有限,可以联合多台电脑一起来编译。这在公司的日常开发中也是可行的,因为可能每个开发人员都有自己的开发编译环境,它们的编译器版本一般是一致的,公司的网络也通常具有较好的性能。这时就是distcc大显身手的时候了。
使用distcc,并不像想象中那样要求每台电脑都具有完全一致的环境,它只要求源代码可以用make -j并行编译,并且参与分布式编译的电脑系统中具有相同的编译器。因为它的原理只是把预处理好的源文件分发到多台计算机上,预处理、编译后的目标文件的链接和其它除编译以外的工作仍然是在发起编译的主控电脑上完成,所以只要求发起编译的那台机器具备一套完整的编译环境就可以了。
distcc安装后,可以启动一下它的服务:
/usr/bin/distccd --daemon --allow 10.64.0.0/16
默认的3632端口允许来自同一个网络的distcc连接。
然后设置一下DISTCC_HOSTS环境变量,设置可以参与编译的机器列表。通常localhost也参与编译,但如果可以参与编译的机器很多,则可以把localhost从这个列表中去掉,这样本机就完全只是进行预处理、分发和链接了,编译都在别的机器上完成。因为机器很多时,localhost的处理负担很重,所以它就不再“兼职”编译了。
export DISTCC_HOSTS="localhost 10.64.25.1 10.64.25.2 10.64.25.3"
然后与ccache类似把g++,gcc等常用的命令链接到/usr/bin/distcc上就可以了。
在make的时候,也必须用-j参数,一般是参数可以用所有参用编译的计算机CPU内核总数的两倍做为并行的任务数。
同样测试一下:
一台双核计算机,make -j4:23分16秒
两台双核计算机,make -j4:16分40秒
两台双核计算机,make -j8:15分49秒
跟最开始用一台双核时的23分钟相比,还是快了不少的。如果有更多的计算机加入,也可以得到更好的效果。
在编译过程中可以用distccmon-text来查看编译任务的分配情况。distcc也可以与ccache同时使用,通过设置一个环境变量就可以做到,非常方便。
总结一下:
tmpfs: 解决IO瓶颈,充分利用本机内存资源
make -j: 充分利用本机计算资源
distcc: 利用多台计算机资源
ccache: 减少重复编译相同代码的时间
这些工具的好处都在于布署的成本相对较低,综合利用这些工具,就可以轻轻松松的节省相当可观的时间。上面介绍的都是这些工具最基本的用法,更多的用法可以参考它们各自的man page。
5.还有提速方法是把屏幕输出重定向到内存文件或/dev/null,因对终端设备(慢速设备)的阻塞写操作也会拖慢速度。推荐内存文件,这样发生错误时,能够查看。

❻ 何谓CAD二次开发AutoCAD都有哪些二次开发工具

朋友您好!
二次开发就是补充Cad软件本身所不具备的功能。
开发工具介绍:
当前AutoCAD的二次开发工具主要有:VisualLisp、VBA、ObjectARX和.NET API等。其中,VisualLisp与VBA较为简单,特别是VBA,使用方便且开发速度较快,但其功能相比ObjectARX有所不足,尤其是对面向对象的功能支持不好。而ObjectARX基于VC平台,在C++的支持下,其功能非常强大,可以很好地运用各种面向对象技术,但其缺点是发开速度比较慢,同时对开发人员的能力要求较高。

.NET是微软新推出的开发平台,具有众多优点。

基于.NET平台对AutoCAD进行二次开发,可充分利用.NET 的各种优势,在保证功能强大的前提下大大提高开发速度。

1 AutoLISP

AutoLISP的全名是LIST Processing Language,她出现于1985年推出的AutoCAD R2.18中,是一种嵌入在AutoCAD内部的编程语言,是LISP原版的一个子集,她一直是低版本AutoCAD的首选编程语言。它是一种表处理语言,是被解释执行的,任何一个语句键入后就能马上执行,它对于交互式的程序开发非常方便。其缺点是继承了LISP语言的编程规则而导致繁多的括号。

2 ADS

ADS的全名是AutoCAD Development System,它是AutoCAD的C语言开发系统,ADS本质上是一组可以用C语言编写AutoCAD应用程序的头文件和目标库,它直接利用用户熟悉的各种流行的C语言编译器,将应用程序编译成可执行的文件在AutoCAD环境下运行,这种可以在AutoCAD环境中直接运行的可执行文件叫做ADS应用程序。ADS由于其速度快,又采用结构化的编程体系,因而很适合于高强度的数据处理,如二次开发的机械设计CAD、工程分析CAD、建筑结构CAD、土木工程CAD、化学工程CAD、电气工程CAD等。

3 ObjectARX

ObjectARX是一种崭新的开发AutoCAD应用程序的工具,她以C++为编程语言,采用先进的面向对象的编程原理,提供可与AutoCAD直接交互的开发环境,能使用户方便快捷地开发出高效简洁的Auto CAD应用程序。ObjectARX并没有包含在AutoCAD中,可在AutoDESK公司网站中去下载,其最新版本是ObjectARX for AutoCAD 2000,它能够对AutoCAD的所有事务进行完整的、先进的、面向对象的设计与开发,并且开发的应用程序速度更快、集成度更高、稳定性更强。ObjectARX从本质上讲,是一种特定的C++编程环境,她包括一组动态链接库(DLL),这些库与AutoCAD在同一地址空间运行并能直接利用AutoCAD核心数据结构和代码,库中包含一组通用工具,使得二次开发者可以充分利用AutoCAD的开放结构,直接访问AutoCAD数据库结构、图形系统以及CAD几何造型核心,以便能在运行期间实时扩展AutoCAD的功能,创建能全面享受AutoCAD固有命令的新命令。ObjectARX的核心是两组关键的API,即AcDb(Auto CAD数据库)和AcEd(Auto CAD编译器),另外还有其它的一些重要库组件,如AcRX(Auto CAD实时扩展)、AcGi(Auto CAD图形接口)、AcGe(Auto CAD几何库)、ADSRX(Auto CAD开发系统实时扩展)。ObjectARX 还可以按需要加载应用程序;使用ObjectARX进行应用开发还可以在同一水平上与Windows系统集成,并与其它Windows应用程序实现交互操作……

❼ 学过VB6.0后在学VB.net容易吗

您好,

我感觉VB6.0 和VB.net有不小的差距,VB.net是纯面向对象的开发语言,为了适应.net Framework的安全性,vb.net进行了不小的调整。但是关键字修饰符之类的基本没有什么变模配伏化,所以您只需要习惯.net下的旦携强类型,应该是不难转型。

举个简单的例子吧,vb.net下是没有“变体类型”这一数据类型的,整型就是整型,字符串就是字符串,像
a = 50 + 60
Text1.Text = a
这样的代码是不行的,VB6.0支持变体类型,会自动进行类型转换,而.net下为了保证安全性,会要求程序员自己进行必要的转换。

至于API,.net框架下对API的依赖性像VB6中那么高,一些API完成的工作可以由一些类库来完成。API的调用也不是一样的,因为有些API涉及到了“不安全代码”,而且API是用另一种非.net 语言编写的,所以调用时有些特别卖岩的要求。

vb.net工作在.NET Framework下,与VB6的解释执行不同,VB.NET是编译执行的,.net下所有的应用程序都被编译成一种“中间语言(MSIL)”的形式,运行时由一种称为即时编译器(JIT)的程序进行二次编译。可以说.net既是开发环境又是运行环境,它提供了通用类型系统(CTS)和“公共语言运行时”(Common Language Runtime,CLR),前者为开发时提供了类型支持,.net下语言中的基本数据类型都来自于这个类型系统;后者为.net应用程序提供了运行环境,包括JIT、GC(内存垃圾收集器)等等,同时负责代码的运行时安全。

最后,我感觉学一门语言并不难,难的是理解一些系统和程序设计中低层的东西,不过,我比较建议您学习VB.NET,因为它的纯面向对象的特性比较符合目前的软件开发方式。

希望这些信息对您有帮助。

❽ dev c怎么随时检查语法

语法错误是指在书写语句时没有按照相应的语法格式。常见的语法错误有变量未定义、括号不匹配、遗漏了分号等等。大多数的语法错误都是能够被编译器发现的。因此相比于语意错误,语法错误更容易被发现,更容易被解决。

语法检查的工作由编译器完成,很多情况下编译器无法智能地报告出真正的语法错误数和错误位置。比如缺少一个变量的定义,而该变量在程序中被使用了6次,则编译器可能会报告6个甚至更多的语法错误,而实际上错误只有一个。所以,对编译器来说,任何一个语法错误都可能是“牵一发而动全身”的。

那么在这种可能发生“误报”的情况下,我们如何快速、正确地找到错误的位置呢?

由于编译器是按顺序查找语法错误的,所以它所找到的第一个错误的位置往往是正确的。如果程序规模不大,编译一次的时间不是很长,我们可以每次只修正编译器报告的第一个错误以及由此可以发现的连带错误,直到整个程序没有任何错误为止。

下面我埋配们就用这种方法来检查一个程序的语法错误:(程序11.3.1)
#include <iostream>
mian()
{
int a,b;
for (i=0,i<3,i++)
{
cin >>a >>b;
c=a+b;
cout <<c <<endl;
}
return 0;
}
第一次编译的第一个错误:
I:programvcook11_3_1main.cpp(5) : error C2065: 'i' : undeclared identifier//未声明的标识符
……
main.obj - 7 error(s), 3 warning(s)//一共还有7个错误和3个警告

第迹液毕一次修改:
for (int i=0,i<3,i++)
第二次编译的第一个姿芹错误:
I:programvcook11_3_1main.cpp(5) : error C2143: syntax error : missing ',' before '<'//逗号语法错误
……
main.obj - 8 error(s), 3 warning(s) //一共还有8个错误和3个警告

第二次修改:
for (int i=0;i<3;i++)
第三次编译的第一个错误:
I:programvcook11_3_1main.cpp(7) : error C2065: 'cin' : undeclared identifier//未声明的标识符
……
main.obj - 4 error(s), 3 warning(s) //一共还有4个错误和3个警告

第三次修改:
添加using namespace std;
第四次编译的第一个错误:
I:programvcook11_3_1main.cpp(9) : error C2065: 'c' : undeclared identifier//未声明的标识符
……
main.obj - 1 error(s), 1 warning(s)//一共还有1个错误和1个警告
第四次修改:
int c=a+b;
第五次编译的第一个错误:
I:programvcook11_3_1main.cpp(12) : warning C4508: 'mian' : function should return a value; 'void' return type assumed//函数需要返回一个值
……
main.obj - 0 error(s), 1 warning(s) //一共还有1个警告

第五次修改:
int mian()
第六次编译:
main.obj - 0 error(s), 0 warning(s)//编译正确
第一次连接的第一个错误:
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main//没有main函数
……
11_3_1.exe - 2 error(s), 0 warning(s)//一共还有2个错误

第六次修改:
int main()
第七次编译:
main.obj - 0 error(s), 0 warning(s)//编译正确
第二次连接:
11_3_1.exe - 0 error(s), 0 warning(s)//连接正确

完整的程序:
#include <iostream>
using namespace std;
int main()
{
int a,b;
for (int i=0;i<3;i++)
{
cin >>a >>b;
int c=a+b;
cout <<c <<endl;
}
return 0;
}

至此,整个程序的所有语法错误都被检查出来并且被修正。程序编译阶段没有任何错误了。通过对这个程序的语法检查,我们总结出以下几点:

❾ Fortran 7.0 DEFORM 二次开发

Deform二次开发,逗唤握需要山庆使用的编辑器如下

Deform 6.x —— Absoft pro fortran 7.0
Deform 10.x / 11.x —— Absoft pro fortran 9.0/11.0
目前,可链派获得的版本,可用的fortran编辑器是7.0版本,最新的14.0或15.0未能编辑成功。
9.0网上可以找到,但是注册失效。8.0可以找到,我还没有试验。11.0根本找不到!

欢迎交流deform的二次开发具体问题!

阅读全文

与二次编译器相关的资料

热点内容
软通动力程序员节2021 浏览:845
安卓系统如何卸载安装包 浏览:868
短信删除助手文件夹 浏览:688
java办公自动化 浏览:340
php中超链接 浏览:253
linux默认路由设置 浏览:36
linux如何挂载iso 浏览:432
vs程序换文件夹后不能编译 浏览:557
安卓源码编译输入脚本没反应 浏览:47
phpmysql自增 浏览:167
把ppt保存为pdf 浏览:533
汽车密封件加密配件 浏览:887
黑马程序员15天基础班 浏览:560
java调整格式 浏览:521
香港云服务器租用价 浏览:78
linuxsublime3 浏览:560
imac混合硬盘命令 浏览:278
沈阳用什么app租房车 浏览:857
00后高中生都用什么app 浏览:239
戴尔塔式服务器怎么打开独立显卡 浏览:808