最近进行C#开发,需求是用IDL进行算法开发,C#进行应用层开发(用户界面等),通过最近查找资料和看IDL的帮助文档,目前已经实现了通过COM_IDL_connect_x86_64Class(64位的版本)进行sav文件的调用,但是现在的需求是,怎么能够在调用过程中,和算法交互,也就是能够获取算法的进度信息,而不是一直等到算法结束,这个对象提供了OnIDLNotify和OnIDLOutput两个事件,但是OnIDLOutput接收到所有的输出,好多无用信息,和编译环境自己输出的信息,因此考虑使用OnIDLNotify事件,但是这个事件从来没被触发过,尝试将在pro中创建IDLitTool对象,然后将在C#中构建的COM_IDL_connect_x86_64Class通过重新获取对象引用的方式添加到IDLitTool观察者集合中,然后通过IDLitTool的方法发送消息,但是调用运行,AddOnNotifyObserver方法直接报错,无法添加COM_IDL_connect_x86_64Class对象,然后尝试导出自定义的继承自IDLitComponent的类,利用NotifyBridge方法,但是多次尝试都导出失败,错误"this object could not be built",参考了好多帖子,如http://bbs.esrichina-bj.cn/esri/viewthread.php?tid=66197&highlight=IDL%B5%BC%B3%F6COM和http://bbs.esrichina-bj.cn/esri/viewthread.php?tid=80723&highlight=IDL%2BCom 但是错误依然无法解决,使用的环境Windows7 64位,ENVI4.7(64位),VS2010,然后使用XP(32位),ENVI4.7,VS2010,以及XP(32位),ENVI4.8,VS2010还是同样的错误,这直接导致导出Com组件失败,
求助大家:
1,利用输出助手导出Com组件出现this object could not be built,具体怎么解决,网络上说的方法都试过了,还是不行,可以观察到调用VS编译器的控制台窗口,但是等到之后还是不行,利用Hello那个IDL帮助里面的例子和Samples文件夹下的例子都不行,
2,C#与IDL实时交互的问题,我这里的思路就是想利用OnIDLNotify这个事件,是否还有其他的方法,这样不导出自定义Com类也行? 注:带界面的Com组件没有尝试,因为项目的原因,这部分在服务端是没有界面的,测试的调用Sav文件功能正常,可以调用执行 感谢大家这么长看完了,希望大家帮我解决这个纠结了好久的问题
哥们你有IDL的开发环境吗?发我一个,az235@sina.com,谢谢了
ENVI4.7,直接用这个搜索下载就行了,这个安装包好几百M,就不给你发了