前段時間覺得好玩,安裝了Intel C++ Compiler進行評估,現在評估結束了,決定卸載。開始卸載之后,Visual C++ 6.0開始罷工了,報告無法找到xicl6.exe進行編譯。搜索了下注冊表,發現Intel C++ Compiler在安裝時候修改了Visual C++的工具設置,但卸載時沒有恢復。可以修改下面兩個地方:
1、HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0\Build System\Components\Platforms\Win32 (x86)\Tools\32-bit C/C++ Compiler for 80×86\Executable Path改成cl.exe;
2、HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0\Build System\Components\Platforms\Win32 (x86)\Tools\COFF Linker for 80×86\Executable Path改成link.exe就可以了。
需要退出VC++ 6.0,然后重新啟動,一切就正常了。
posted @
2006-06-13 15:59 zealsoft 閱讀(2210) |
評論 (3) |
編輯 收藏
使用Borland Developer Studio (BDS) 2006打開一個C++Builder工程,出現Access Violation錯誤:
+ $6[22B5B07D]{bcbide100.bpl} XMLProj.XMLProj.CreateNewBdsProjFile (Line 1249, "..\cpp\XMLProj.pas" + 2) + $6
+ $0[51F06B47]{rtl100.bpl? } System.System.@HandleAnyException (Line 9980, "system.pas" + 13) + $0
?+ $41[7C923786]{ntdll.dll?? } RtlConvertUlongToLargeInteger + $41
?+ $9[7C92EAF5]{ntdll.dll?? } KiUserExceptionDispatcher + $9
?+ $22[22B251E6]{bcbide100.bpl} CppProjOpts.CppProjOpts.MakeBprToBdsProj (Line 7414, "CppProjOpts.pas" + 8) + $22
?+ $24[22B2564C]{
bcbide100.bpl} CppProjOpts.CppProjOpts.TCppLegacyProjectFileHandler.Convert (Line 7637, "CppProjOpts.pas" + 11) + $24
?+ $9[22B257A8]{bcbide100.bpl} CppProjOpts.CppProjOpts.TCppLegacyProjectFileHandler.FileOpen (Line 7676, "CppProjOpts.pas" + 1) + $9
?+ $14[20C347A4]{coreide100.bpl} DocModul.DocModul.TFilterList.OpenFile (Line 777, "DocModul.pas" + 35) + $14
?+ $1E[20C39572]{coreide100.bpl} DocModul.DocModul.ProjectOpenDialog (Line 3079, "DocModul.pas" + 30) + $1E
[00412CC7]{bds.exe???? }
?+ $3[218AD460]{vclactnband100.bpl} ActnMenus.ActnMenus.TCustomActionMainMenuBar.TrackMenu (Line 3143, "ActnMenus.pas" + 3) + $3
?+ $4[218A891D]{vclactnband100.bpl} ActnMenus.ActnMenus.TCustomActionMenuBar.CMItemClicked (Line 883, "ActnMenus.pas" + 3) + $4
?+ $6[5203C998]{vcl100.bpl? } Controls.Controls.TWinControl.WndProc (Line 7242, "Controls.pas" + 101) + $6
?+ $4[218AA158]{vclactnband100.bpl} ActnMenus.ActnMenus.TCustomActionMenuBar.WndProc (Line 1572, "ActnMenus.pas" + 15) + $4
?+ $0[51F40BB0]{rtl100.bpl? } Classes.Classes.StdWndProc (Line 11572, "classes.pas" + 8) + $0
?+ $6F[77D18706]{USER32.dll? } GetDC + $6F
?+ $14F[77D187E6]{USER32.dll? } GetDC + $14F
?+ $122[77D189A0]{USER32.dll? } GetWindowLongW + $122
?+ $A[77D1BCC7]{USER32.dll? } DispatchMessageA + $A
經過檢查,發現BDS2006只能處理C++Builder 5/6的工程,而早期的工程文件由于不是XML格式,就會導致上面的錯誤。而要想處理早期的工程,必須先用BCB 6.0轉換一下。
posted @
2006-05-03 22:36 zealsoft 閱讀(1547) |
評論 (0) |
編輯 收藏
一個朋友來信說,他在工程中添加了一個數據導出到Excel表的類CSpreadSheet,結果出現了LNK2005的錯誤。在網上查了一下,發現還不只我這個朋友遇到這個問題,CSDN上也有類似問題:http://topic.csdn.net/t/20050311/09/3842070.html
這個CSpreadSheet.h文件在CodeProject和CodeGuru上都有,其實是這個文件有問題。這個頭文件既包括了CSpreadSheet類的定義,還包括這個類的實現,這樣所有包含這個頭文件的類都有一份這個類的實現,鏈接的時候自然就出錯了。只要工程中有兩個以上的地方包含這個頭文件就會出現這個錯誤。解決的辦法很簡單,建立一個CSpreadSheet.cpp文件,然后在這個文件的開頭加上:
#include?“stdafx.h”
#include?“CSpreadSheet.h”
然后把CSpreadSheet.h中的從“// Open spreadsheet for reading and writing”(含)到“#endif”(不含)之前的語句都剪切到CSpreadSheet.cpp中,也就是將類的聲明和實現分離,再將CSpreadSheet.cpp文件加到工程中,這樣就可以了。
posted @
2006-04-24 15:24 zealsoft 閱讀(1520) |
評論 (0) |
編輯 收藏
早期的PhotoShop的SDK是免費的,不過現在已經收費了。主要是因為編寫PS插件的人太多,Adobe覺得可以賺一筆了。你現在仍然可以從
這個地址找到4.0和5.0的SDK。不過最新版本的SDK只能從
Adobe PhotoShop Developer Center獲得。一般的,你必須加入ASN Developer Program(收費)才能獲得全部SDK。不過你也可以提出申請,說明理由,Adobe可能會給予你免費的SDK。由于我們編寫插件的目的是為了教學研究使用,所以Adobe給予了免費的SDK。不過這個SDK中沒有包括Import和FileFormat等一些插件的頭文件、文檔和例子。不知道這是不是免費的SDK和收費的SDK的區別。
posted @
2005-10-09 11:27 zealsoft 閱讀(4437) |
評論 (17) |
編輯 收藏
PhotoShop的插件體系由兩部分組成,一是插件(plug-in modules),二是宿主(plug-in hosts)。插件是Adobe或第三方開發者開發的、用以擴展標準Photoshop功能的軟件模塊,用戶可以不需改動宿主的代碼,而通過在系統中增加或升級插件以滿足自己的需要。宿主則負責把插件載入內存并通過一定接口進行調用、協作,當插件功能完畢之后,將插件從內存中卸載。Harald Heim的文章中介紹了支持PhotoShop插件的許多宿主軟件。
每個PhotoShop插件的文件擴展名雖然都是.8開頭(表1),其實都是DLL文件。每個DLL中可以有多個插件,不過一般只帶有一個插件。
表1 插件的類型和控制名
文件類型 |
擴展名 |
通用 |
.8BP |
Automation |
.8LI |
Color Picker |
.8BC |
Import |
.8BA |
Export |
.8BX |
Extension |
.8BE |
Filter |
.8BF |
使用Depends查看一個Dissolve.8bf的輸出函數就可以發現,其中的PluginMain函數是插件的入口函數,PhotoShop將通過這個函數訪問插件的功能。這個函數的名字可以通過修改資源文件的方式修改。另一個_DissolveProc@16是窗口回調函數,與PhotoShop無關。
posted @
2005-10-06 10:17 zealsoft 閱讀(2628) |
評論 (0) |
編輯 收藏
之所以想開發PhotoShop的插件,來自于上學期的經歷。有個其他老師的學生老來問一些關于MFC的問題,她正在做一個合成孔徑雷達(SAR)圖象評估的軟件。作為一個電子工程系的學生,她的編程基礎當然不是很理想,所以那些GDI、窗口變換、文件操作的基本問題都可以難上她幾周的時間,看上去很可憐。象她這樣研究SAR的,機器上都裝有PhotoShop,我說你可以編寫一個PhotoShop插件,這樣就不用去了解那些Windows編程的細節,將精力主要集中在SAR算法上,否則兩年的時間怎么夠用呀,而且你注定無法成為一個Windows編程的高手,還是成為SAR專家比較靠得住。可是她的老師沒有想到過PhotoShop插件,她也從來沒有想過。我在想,有多少象她這樣的情況呢?所以,決定研究一下PhotoShop插件的編寫,也許對許多搞科研的人有用。下面介紹一下PhotoShop的插件所需要的基本工具和基本概念。
要編寫PhotoShop的插件需要PhotoShop SDK。要得到該SDK,需要到http://www.adobe.com/devnet/photoshop/下載,安裝以后包括編寫插件所需要的頭文件、資源文件、文檔、輔助工具和例子。由于PhotoShop最初是從Mac機上移植過來的,所以它的文檔和大多數例子都有Mac機的痕跡,Adobe推薦在Windows上使用Mac機的資源格式,這樣可以方便開發支持Windows和Mac的插件,這對于從小就用Windows開發的人來說夠痛苦的。而且它的文檔從5.0版本以來就沒有怎么更新,所以最新的內容許多要靠閱讀例子獲得。PhotoShop的開發主要使用C/C++語言,SDK中的所有例子都包括Visual Studio.NET 2003的工程,這點還比較方便。
PhotoShop支持的插件有以下種類:
- Automation
Automation模塊可以訪問所有Photoshop腳本事件。這些模塊都出現在Automate菜單或Help菜單。在SDK的Photoshop Actions Guide.pdf中介紹了這些插件的開發。
- Color Picker
Color Picker模塊為實現不同的顏色選擇器提供一個插件接口。
- Import
Import模塊在一個新的窗口打開圖象。Import模塊,常用于掃描儀或視頻捕捉卡接口,讀取壓縮格式或系統不支持的文件,通過Import 子菜單調用。
- Export
Export模塊輸出已存在的圖象,,常用于控制特殊打印機或以非標準壓縮格式進行文件輸出,通過Export子菜單調用。
- Extension
Extension模塊是內部模塊,接口不公開。
- Filter
Filter模塊(濾鏡)實施對當前圖像中的選定區域進行修改、潤色。這是大家最熟悉的部分,許多圖像效果便是出自這些模塊,通過Filter菜單調用。
- Format
Format模塊,也叫File Format和Image Format模塊,提供對讀寫其他圖象格式的支持。它們出現在Open..., Save As...和Save a Copy...等對話框的格式彈出菜單中。
- Parser
Parser模塊類似Import和Export模塊,提供在Photoshop和其他 (通常是矢量的)格式,如Adobe Illustrator™ or Adobe® PageMaker™之間交換數據的支持。它們的接口不公開。
- Selection
Selection模塊修改圖象中被選中的像素,也可以返回路徑或像素選擇區。這些模塊出現在Selection菜單下。
如果想讀些入門教程,可以參考以下文章
-
-
MACTECH中的英文文章:
第一部分和
第二部分,雖然是針對Mac版本寫的,但是概念清楚,比SDK的文檔還要經典。
在今后的Blog中,我會逐步介紹有關開發的內容。
posted @
2005-09-12 17:22 zealsoft 閱讀(9221) |
評論 (12) |
編輯 收藏