TMF814_v3.5 用 tao_idl 编译时的问题解决方法

最近做网管北向接口,用了官方的 idl ,结果出现一堆问题。所有问题解决花了我快一个星期,因此把我的经验介绍给大家。


问题一: 神秘的 OMGidl 文件夹


官方的TMF814_v3.5 idl文件有个 OMGidl 文件夹,点进去一看,这不是CORBA的核心代码嘛。一开始不敢改,就硬着头皮编译,结果出问题了,因为用CORBA 就必须使用 TAOd.lib 和相关的几个库。编译不过,然后对比了下 TAO 的那些代码,发现 OMGidl 文件夹 里的文件最后修改时间有 2001年 的有2003年的,最多的是2006年的。TAO里的代码都是 2014年的。OMGidl 文件夹里的文件太老了。

然后弃用OMGidl的文件,然后把其他的idl中凡是引用了OMGidl的文件的,比如:

#include "OMGidl/CosNotification.idl"

改成

#include "CosNotification.idl"

然后直接用TAO的idl,这样tao_idl 编译时要如下编写:

 tao_idl %inputFile% -I%TAO_ROOT%\orbsvcs\orbsvcs -o %outputDir%
这样编译就完成了。但是问题来了链接出错。


问题二: 奇怪的链接错误,多重定义。

<span style="color: rgb(34, 34, 34); font-family: 'Helvetica Neue', Arial, sans-serif; font-size: 15px; line-height: 20px;"></span><pre name="code" class="html" style="text-align: left;">TAO.lib(TAO.dll) : error LNK2005: "public: void __thiscall TAO::unbounded_value_sequence<int>::length(unsigned int)"
<pre name="code" class="html">(?length@?$***@H@TAO@@***@Z) already defined in simpleC.obj

 
<pre name="code" class="html">TAO.lib(TAO.dll) : error LNK2005: "public: void __thiscall TAO::unbounded_basic_string_sequence<wchar_t>::length(unsigned int)" (?length@?$***@_W@TAO@@***@Z) already defined in simpleC.obj
 
 
 

看到这个的童鞋是不是有心碎的赶脚。这是怎么回事。

后来,历经千辛万苦,终于在国外的网站上发现了高人的指点。

把所有出现重定义的idl文件里,在最前面(所有 #include 的前面 #ifdefine后面)加上如下:

 #include "orb.idl"
然后,编译,然后这个世界清静了。


最后,终于知道为什么OMGidl 文件夹里有代一个orb.idl。他们一定知道这是个坑。

原文链接: https://groups.yahoo.com/neo/groups/tao-users/conversations/topics/22164 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值