當前位置:首頁 » 編程軟體 » ads如何編譯生成可執行文件

ads如何編譯生成可執行文件

發布時間: 2024-03-03 03:13:49

編譯minix操作系統時,總有提示沒有找到後綴名為.a的文件,.a文件是什麼文件怎麼生成

.a文件是.o文件的集合,可用ar -tv命令查看裡麵包含的.o文件。

ADS編譯選項小技巧

2005-12-01 12:50

今天收到了中文之星發來的輸入法文件,發現生成的庫文件是.a後綴的,因為習慣使用.lib形式的後綴,又擔心直接修改後綴名稱會出問題,所以想研究一下怎麼把.a修改成.lib文件。

命令行模式下輸入armar查詢參數,發現了幾個比較需要的參數:

-x Extract members in <file_list> placing in files of the same name.

-t Print table of contents of archive.

-create Force creation of a new archive.

於是,輸入armar -t csk2.a查看了庫文件的組成文件列表,然後輸入armar -x csk2.a解壓出全部.o文件,最後armar -create csk2.lib *.o,成功生成csk2.lib。比較csk2.a和csk2.lib發現有一個數字不一樣,估計是生成時間不一樣,現在想想或許直接改後綴就可以了。雖然走了彎路,但是通過查詢編譯參數還發現了不少好用的功能,這里就不列舉了附上參數表,自己慢慢研究。

-r Insert files in <file_list>, replace existing members of the same name.

-d Delete the members in <file_list>.

-x Extract members in <file_list> placing in files of the same name.

-m Move files in <file_list>.

-p Print files to stdout.

-a pos Insert/move files after file named <pos>.

-b pos Insert/move files before file named <pos>.

-u Update older files only, used with -r.

-n Do not add a symbol table to an object archive.

-s Force regeneration of archive symbol table.

-t Print table of contents of archive.

-zs Show the symbol table.

-zt Summarize the archive contents (sizes + entries).

-c Suppress warning when a new archive is created.

-C Do not overwrite existing files when extracting.

-T Truncate file names to system maximum length.

-v Give verbose output.

-create Force creation of a new archive.

-via file Take additional arguments from via file.

-sizes List the size of each member and the library total.

-entries List sections containing ENTRY points.

-vsn Print the current Armar Version.

-help Print this message.

Examples:-

armar -r mylib.a obj1 obj2 obj3...

armar -x mylib.a ?sort*

armar -d mylib.a hash.o

armar -tv ansilib.a

❷ ADS1.2與交叉編譯環境各有什麼用

ADS 1.2是一種集成開發環境軟體。
交叉編譯器是一種可以在平台A上為另一種平台B編譯程序的編譯器。其中,運行交叉編譯器的平台A成為宿主機,交叉編譯生成的目標文件的運行平台B稱為目標機。交叉編譯器的編譯過程稱為交叉編譯。
程序源代碼 ——> 交叉編譯器/宿主機 ——> 可執行文件/目標機

❸ 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

熱點內容
在香港怎麼買安卓手機 發布:2024-11-16 03:15:37 瀏覽:762
存儲sp 發布:2024-11-16 03:14:08 瀏覽:849
電視機存儲功能 發布:2024-11-16 03:12:50 瀏覽:869
極品飛車17安卓怎麼安裝 發布:2024-11-16 03:12:13 瀏覽:317
長春java 發布:2024-11-16 03:10:47 瀏覽:577
性價比高的台式電腦怎麼配置 發布:2024-11-16 03:04:58 瀏覽:632
軟體測試學python 發布:2024-11-16 02:55:39 瀏覽:563
sql2008數據同步 發布:2024-11-16 02:33:46 瀏覽:928
sql2008sa密碼 發布:2024-11-16 02:33:45 瀏覽:199
pr清緩存 發布:2024-11-16 02:31:28 瀏覽:656