当前位置 博文首页 > 流浪若相惜的专栏:AE、IDL开发问题锦集

    流浪若相惜的专栏:AE、IDL开发问题锦集

    作者:[db:作者] 时间:2021-07-31 21:11

    1、没有注册类(异常来自HRESULT:0x80040154(REGDB_E_CLASSNOTREG))

    如图1所示:
    这里写图片描述
    图1 没有注册类
    其实,这个问题在AE开发时也碰到过,因为我们所调用AE的dll也好,还是调用的IDL中IDLDrawWidget也好,仔细想想其实都是从bin.x86下获取的,也就是说平台式x86.好了,再来看看我们现在的平台。
    这里写图片描述
    图2 平台
    额,是ANY CPU。因此,我们需要将平台改为x86。

    2、引用组件IDLDrawWidget时,没有出现

    解决这个问题是组件没有注册,因此需要将组件进行注册一下就能查看到组件了。注册方式如下图所示:
    这里写图片描述
    图3 注册组件

    3、IDL_M_UPRO_UNDEF:Attempt to call undefined procedure/function:’‘。**

    相信这个问题有好多c#调用DL二次开发I的同学碰到过好多次。但是却无从下手,IDL程序没有问题,在IDL中运行正常。路径也是看了又看,pro文件在c#中路径确实是指定的位置。但是仍旧出现如图所示的问题。其实,说到底还是路径的问题,不是路径错误,是中文不识别问题。(悲催的我,整个解决方案都是中文名字,更不要说项目是中文名字了。)因此,c#调用IDL时不要出现中文路径,这才是关键所在。
    这里写图片描述
    图4 尝试调用未定义的过程或者函数
    好了,这里多说一点关于如何更改解决方案及解决项目名字问题。我费了一上午终于总结了一下几点:
    1、先备份,同志们,不要冲动!
    2、将sln的aa名字修改bb,然后用记事本打开,将aa名字进行全部替换bb
    3、将csproj名字由aa修改为bb
    4、将suo名字由aa修改为bb(有的就改)
    5、将项目名字cc,修改为dd,并打开一个类文件,然后ctrl+f,全部替换,选择整个项目。
    ok,一般问题就这样解决了!(当然了,如果你程序中用了项目的固定路径,需要程序内部修改)

    4、检索COM类工厂中CLSID的组件失败,原因错误:80040154
    此问题是调用COM_IDL_Connect_Lib时出现的问题,我本想用x86_64的lib,结果就出现了下图所示的错误:
    这里写图片描述
    图5 COM_IDL_Connect_Lib
    这个错误只需要将

         COM_IDL_connect_x86_64Lib.COM_IDL_connect_x86_64Class idlConnect = new COM_IDL_connect_x86_64Lib.COM_IDL_connect_x86_64Class();

    改为:

     COM_IDL_connectLib.COM_IDL_connectClass idlConnect = new COM_IDL_connectLib.COM_IDL_connectClass();

    就可以了(我的程序平台式x86,不知道x64的用x86_64是否可以,有兴趣的可以尝试一下)。

    5、The specified language is not available in the language catalog.
    Using the new API - Error Message: “The specified language is not available in the language catalog.”
    Tuesday, February 25, 2014
    PROBLEM:
    You try to start ENVI 5.1 from the IDL 8.3 workbench by typing the command:
    e=envi()
    and you receive the following error message:
    IDL> e=envi()
    % Restored file: ENVI.
    % Loaded DLM: HPGRAPHICS.
    % Loaded DLM: XML.
    The specified language is not available in the language catalog.
    The available languages are:
    eng
    % Loaded DLM: PNG.

    BACKGROUND:
    This message occurs depending on your local language settings, in many cases if you have for example a German operating system, you will receive this message:
    “The specified language is not available in the language catalog.”
    To see and to change your language settings in ENVI, follow the next steps:

    SOLUTION:
    1) Open ENVI 5.1
    2) Go to File > Preferences > Settings > Localization Settings (See Screenshot)
    这里写图片描述
    图6 language error
    3) If you have in the language field something different then eng (e.g. “deu” like in the screenshot above > change it to“eng”
    4) Make sure eng is set and click OK
    5) This setting requires a restart of ENVI

    6、IDL出现:% Restored file: ENVI. % Variable is undefined: ENVITASK.
    出现类似的问题,可以解释为ENVI函数没有实际的意义,换句话说就是不识别ENVI函数。为了避免这种情况,我们应该在程序开头添加上这句代码:

     COMPILE_OPT IDL2

    更新中。。。

    cs