登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Mr.7

我将骄傲的活在这个大唐盛世

 
 
 

日志

 
 

FME 的 plugin并不是很容易的  

2007-11-29 22:54:58|  分类: 一道鸡丝 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

FME的新格式plugin并不是那么容易的。

首先说调试吧。在帮助文档和readme文本中说的信誓旦旦的,可以通过插件附加fme平台进行调试。这种调试方法大家都会,也并不神奇。可是在实际过程中,tfs_fixedSchema.dll中设置好满满的断点,可是一运行,这些断点全失效。可是明明看到这些代码都运行,弹出了自己设置的消息。难道是dll没怎么设置好?左弄右弄,请高手帮忙,还是无效。虽然知道这些插件是运行时调用又运行时释放,但是还是不能解释断点为什么无效。不能调试,直接影响就是不能直接了当的了解整个运行机制。只能凭着自己在运行代码中嵌入语句来跟踪分析了。

为了解决调试问题,也想了其它的方法。将VC8中的那个dll改造成VC6的dll,这样简单又趁手。外国人不爱用MFC,可见看出他们程序设计的历史,既悠久经验丰富,又归于正途气势磅礴。一切弄好,结果发现在源代码中一个语法调试不过。在VC6中不支持普通类的成员模板函数,而tfs例子中加入了这一功能支持。真是功亏一篑。

后来干脆另起炉灶,重新开发自己的读写插件来测试。现在回想,这条路还是荆棘坎坷的。

发现了版本问题。FME每个版本都有一个版本号,每个插件dll都要返回版本号。只有版本号一致的插件才能在FME平台中运行。这个版本的实现方法比较简单。基本上是FME提供底层版本的SDK,里面包含当前版本号,每个插件不用改代码重新编译一遍即可。这不是问题的关键,用简单的方法解决就行了,不深究。

想做的这个插件,先是空的,实际的打开关闭读写都不做任何事,只是返回一些消息,告知目前正在做什么事。按照例子封装好了接口,编译通过。

运行时发现很多问题。加入formatinfo\MyTest.db来声明类型,Copy过去MyTest.dll,在Workbench中浏览数据时可以找到自己定义的后缀类型,但是选中数据后并不能正常运行。提示差“metafile\MyTest.fmf”文件。在那里发现“tfs_fixedschema.fmf”。打开发现就是文本文件,里面有一些设置,不是很清楚语法。Copy重命名为MyTest.fmf,再运行,发现仍找不到。参照tfs_fixedschema.fmf,改改里面的配置,可能涉及到schemas\*.sch。忽略,可以正常运行了。可是运行过程中发现无穷占据内存。结合代码消息调试,发现openreade成功,但是Init api后就陷入了死循环,都没有来得及readfeature。看来还是那个fmf语法有问题。

今天的探索就到此裹步不前了。网上找相关东西还是找不到。没有正版支持,遗憾啊:)

另外说一句,最后还试验了在VC6 dll中仍不能调适。放到FME 2006GB中也不能调试。看来今天的问题一个都没有解决的。

    相关系列:
  1. 2007-12-04 FME的原来如此
  2. 2007-12-16 FME 的插件还是可调试的 但下一步呢
  3. 2007-11-28 FME 中是如何识别一种数据格式的
  4. 2007-11-22 我的FME
  5. 2007-11-05 FME - 翻译测试
  6. 2007-10-17 那一瞥的feel for FME
  评论这张
 
阅读(1208)| 评论(1)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018