❶ 請教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;
}
至此,整個程序的所有語法錯誤都被檢查出來並且被修正。程序編譯階段沒有任何錯誤了。通過對這個程序的語法檢查,我們總結出以下幾點:
編譯器所報告的第一個錯誤位置往往是有效的,但是報告的錯誤內容未必正確。比如第二次編譯時報告的錯誤是「在小於號之前缺少了逗號」,而事實上問題是for語句中應該使用分號。所以,報告的錯誤內容只能參考,卻不能完全相信。
編譯器報告的錯誤數目與實際錯誤數目未必符合。甚至第一次改正一個錯誤後,錯誤數反而增加了。所以,報告的錯誤數目不能正確描述實際的錯誤規模。
編譯器報告的警告也應當被重視。有些人認為即使程序存在警告,但是它能正常執行,所以警告可以被忽視。這種想法是錯誤的。如果一個程序是完美的,為什麼編譯器還要給出警告呢?警告的存在就說明了這個程序有些地方還不符合正確的語法。
I:programvcook11_3_1main.cpp(5)括弧中的5表示錯誤在程序的第5行。我們不需要自己去數行數,只需要雙擊這個錯誤就能到達對應的行。
❾ 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的二次開發具體問題!