posts - 27,  comments - 68,  trackbacks - 0

前段时间觉得好玩,安装了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 阅读(2190) | 评论 (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 阅读(1530) | 评论 (0)编辑 收藏

一个朋友来信说,他在工程中添加了一个数据导出到Excel表的类CSpreadSheet,结果出现了LNK2005的错误。在网上查了一下,发现还不只我这个朋友遇到这个问题,CSDN上也有类似问题:http://topic.csdn.net/t/20050311/09/3842070.html
这个CSpreadSheet.h文件在CodeProjectCodeGuru上都有,其实是这个文件有问题。这个头文件既包括了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 阅读(1512) | 评论 (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 阅读(4414) | 评论 (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 阅读(2612) | 评论 (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菜单下。

如果想读些入门教程,可以参考以下文章

在今后的Blog中,我会逐步介绍有关开发的内容。

posted @ 2005-09-12 17:22 zealsoft 阅读(9188) | 评论 (12)编辑 收藏
仅列出标题
共3页: 1 2 3 
欢迎访问我的学术博客

<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用链接

留言簿(13)

随笔分类(28)

随笔档案(27)

搜索

  •  

积分与排名

  • 积分 - 57268
  • 排名 - 395

最新评论

阅读排行榜

评论排行榜