1.介绍

IDL(接口描述语言)是一种使用类似C ++风格定义结构的文本文件。该文件包含必须交换的数据结构。结构由struct关键字定义;

IDL文件使用DCPS_DATA_TYPE定义一个结构体数据类型,OpenDDS要求数据类型必须是一个结构体,并且是以#pragma的方式进行传输的,以idl文件形式存在。

使用DCPS_DATA_KEY定义了一个数据类型的键。一种数据类型可能有0个或多个键。这些键用于区分同一个主题内的不同实体。

注意:IDL中左侧大括号不能另起一行,必须与代码同行

#ifndef _TRANSLATEDATA_IDL_
#define _TRANSLATEDATA_IDL_
module TranslateData{#pragma DCPS_DATA_TYPE "TranslateData::TranslateJsonData"struct TranslateJsonData{string jsonData;};
};
#endif

2.编译

2.1.tao_idl.exe TranslateData.idl

假设系统的环境变量已经配置完成;
运行VS2013命令行,进入到idl文件所在的目录下:

运行命令:

tao_idl.exe TranslateData.idl


运行完成之后,目录下面对多出5个文件

*C.cpp  *C.h  *C.inl  *S.cpp  *S.h

*C是客户端代码,*S是服务端代码

2.1.opendds_idl.exe TranslateData.idl

直接在此运行命令:

opendds_idl.exe TranslateData.idl


目录下面会多出三个文件:

*TypeSupport.idl  *TypeSupport.cpp  *TypeSupport.h

3.编辑mpc文件

project(*Common) : dcps {sharedname     = TranslateDataCommon //DLL名称dynamicflags   = TRANSLATESATACOMMON_BUILD_DLL //宏定义libout         = .requires += tao_orbsvcsrequires += no_opendds_safety_profileafter    += Svc_Utilsincludes      += $(TAO_ROOT)/orbsvcsidlflags      += -I$(TAO_ROOT)/orbsvcs \-Wb,export_macro=TranslateDataCommon_Export \-Wb,export_include=TranslateDataCommon_Export.hdcps_ts_flags += -Wb,export_macro=TranslateDataCommon_ExportTypeSupport_Files {TranslateData.idl}IDL_Files {TranslateDataTypeSupport.idlTranslateData.idl}// We only want the generated filesHeader_Files {//TranslateDataCommon_Export.h}// We only want the generated filesSource_Files {}
}

使用perl进行编译mpc文件,输入命令:

perl F:\DDS\ACE_wrappers\bin\mwc.pl -type vc12

使用mwc.pl的完整路径,
-type vc12:表明编译环境是VS2013

VS2013工程文件就编译好了:

如果没有成功,则要看一下,系统环境变量有没有设置完成,以下四个系统环境变量必须设置,否则会出现问题:

ACE_ROOT
DDS_ROOT
MPC_ROOT
TAO_ROOT

用VS2013打开sln文件,编译Release版本,然后编译,出现错误:

fatal error C1083: 无法打开包括文件: “TranslateDataCommon_Export.h”: No such file or directory

新建一个TranslateDataCommon_Export.h文件:

// Definition for Win32 Export directives.
// This file is generated automatically by generate_export_file.pl TranslateJsonData
// ------------------------------#ifndef TRANSLATEJSONDATA_EXPORT_H
#define TRANSLATEJSONDATA_EXPORT_H#include "ace/config-all.h"#if defined (ACE_AS_STATIC_LIBS) && !defined (TRANSLATEJSONDATA_HAS_DLL)
#  define TRANSLATEJSONDATA_HAS_DLL 0
#endif /* ACE_AS_STATIC_LIBS && TRANSLATEJSONDATA_HAS_DLL */#if !defined (TRANSLATEJSONDATA_HAS_DLL)
#  define TRANSLATEJSONDATA_HAS_DLL 1
#endif /* ! TRANSLATEJSONDATA_HAS_DLL */#if defined (TRANSLATEJSONDATA_HAS_DLL) && (TRANSLATEJSONDATA_HAS_DLL == 1)
#  if defined (TRANSLATEJSONDATA_BUILD_DLL)
#    define TranslateDataCommon_Export ACE_Proper_Export_Flag
#    define TRANSLATEJSONDATA_SINGLETON_DECLARATION(T) ACE_EXPORT_SINGLETON_DECLARATION(T)
#    define TRANSLATEJSONDATA_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
#  else /* TRANSLATEJSONDATA_BUILD_DLL */
#    define TranslateDataCommon_Export ACE_Proper_Import_Flag
#    define TRANSLATEJSONDATA_SINGLETON_DECLARATION(T) ACE_IMPORT_SINGLETON_DECLARATION(T)
#    define TRANSLATEJSONDATA_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
#  endif /* TRANSLATEJSONDATA_BUILD_DLL */
#else /* TRANSLATEJSONDATA_HAS_DLL == 1 */
#  define TranslateDataCommon_Export
#  define TRANSLATEJSONDATA_SINGLETON_DECLARATION(T)
#  define TRANSLATEJSONDATA_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK)
#endif /* TRANSLATEJSONDATA_HAS_DLL == 1 */// Set TRANSLATEJSONDATA_NTRACE = 0 to turn on library specific tracing even if
// tracing is turned off for ACE.
#if !defined (TRANSLATEJSONDATA_NTRACE)
#  if (ACE_NTRACE == 1)
#    define TRANSLATEJSONDATA_NTRACE 1
#  else /* (ACE_NTRACE == 1) */
#    define TRANSLATEJSONDATA_NTRACE 0
#  endif /* (ACE_NTRACE == 1) */
#endif /* !TRANSLATEJSONDATA_NTRACE */#if (TRANSLATEJSONDATA_NTRACE == 1)
#  define TRANSLATEJSONDATA_TRACE(X)
#else /* (TRANSLATEJSONDATA_NTRACE == 1) */
#  if !defined (ACE_HAS_TRACE)
#    define ACE_HAS_TRACE
#  endif /* ACE_HAS_TRACE */
#  define TRANSLATEJSONDATA_TRACE(X) ACE_TRACE_IMPL(X)
#  include "ace/Trace.h"
#endif /* (TRANSLATEJSONDATA_NTRACE == 1) */#endif /* TRANSLATEJSONDATA_EXPORT_H */// End of auto generated file.

再次编译,就成功了,当前目录下面就生成了dll和lib文件。

aaa

OpenDDS制作编译idl文件之一相关推荐

  1. 使用JacORB编译idl文件生成依赖的开发jar---Corba北向接口开发001

    1.首先安装JacORB,JacOrb是用来通过把厂商提供的idl接口,编译成java接口,然后通过java接口 可以调用厂商的具体的功能以及服务,来获取厂商数据的工具,这个有点类似于,通过restf ...

  2. vs编译idl文件_Unity中 .asmdef文件的作用

    项目中引用了一个插件源码,修改插件源码的时候遇到一个问题,就是一个脚本文件调用另外一个脚本文件的函数的时候一直提示缺失命名空间的引用,找不到此对象.但是我明明已经把它的命名空间加上了,还是提示错误,后 ...

  3. VS2008编译RPC idl文件(支持.ACF文件)

    1.命令行编译: 使用vc的Microsoft Visual Studio\VC98\Bin\下的MIDL.EXE进行编译(命令行编译时会自动添加.ACF文件进行编译): midl hello.idl ...

  4. OpenDDS中IDL文件的处理命令的使用

    OpenDDS处理IDL时,分别将用TAO和OpenDDS的IDL编译器进行处理,处理命令包含opendds_idl.tao_idl.idl2jni等,各自的作用如下 tao_idl,将IDL文件生成 ...

  5. OpenDDS内部关键的idl文件(DCPS)

    DdsDcpsCore.idl,定义了DCPS模块所需要的各种通讯报文(即DCPS层所需要的结构体),有助于了解和深入掌握DCPS层的含义. DCPS以数据为中心的发布订阅层,共包含了16个idl文件 ...

  6. HTML Help Workshop制作chm帮助文件和在应用程序中的调用

    最近在使用微软公司提供的HTML   Help   Workshop工具包 制作chm帮助文件, 现在总结如下:     一.制作前的HTML文件准备工作 由于chm帮助文件是基于HTML文件特征的, ...

  7. linux制作光盘镜像文件

    随着光盘刻录机在linux计算机上的普及,以iso为主的光盘映像文件制作.转换.编辑等成了大家非常关心的东西.iso等格式的文件是一种数据在数据光盘上的组织形式,即光盘上的文件系统格式. 那么,哪些软 ...

  8. 如何制作CHM帮助文件

    工具:Microsoft的HTML Help Workshop 安装完HTML Help Workshop后,您可以在开始菜单|程序|HTML Help Workshop中打开它.要建立CHM帮助文件 ...

  9. IDL文件详解[转]

    IDL文件详解[转] ���¼���ԭʼ��ҳ ��ӡ IDL详解 - Alex_ - 博客园 Question: 什么是IDL和MIDL? Answer: IDL是接口定义语言. MIDL是Micr ...

  10. linux系统内核制作,编译内核制作一个小型的linux系统

    前言 今天我将会给大家带来如何定制一个属于自己linux系统,也就是编译内核,那为什么要编译内核呢? 内核,是一个操作系统的核心.它负责管理系统的进程.内存.设备驱动程序.文件和网络系统管理,决定着系 ...

最新文章

  1. mysql 替代 in_mysql用什么代替in
  2. 使用selenium+phantomJS实现网页爬取
  3. java WebMvcConfig 全局设置时间服务器时区
  4. 【学习笔记】4、Jupyter Notebook闪退问题
  5. mysql中非主键不能自增吗_mysql非主键自增长用法实例分析
  6. shell中执行hive命令错误:delimited by end-of-file (wanted `EOF')
  7. SpringBoot核心原理:自动配置、事件驱动、Condition
  8. 有可能导致HttpQueryInfo 执行时出现12150 错误的一个原因
  9. nodejs学习笔记-入门helloworld
  10. go - struct
  11. 谁分配谁释放HEAP
  12. linux下轻松修改pdf文件
  13. 恶意软件\垃圾流氓通用反删除批处理文件
  14. Servlet判断用户是否登陆过、异地登录和登出功能
  15. 进销存设计与分析_库存明细表(14)
  16. opencv历史BUG
  17. android版本 51,51星变手机版
  18. matlab求一个数的位数字,matlab求一个三位整数各位数字的立方和等于该数本身则称为...
  19. GET,POST和PUT的区别
  20. 网站邀请码php,简单的PHP邀请码系统

热门文章

  1. 手把手教你给小米游戏本安装macOS
  2. AopAutoConfiguration matched: - @ConditionalOnProperty (spring.aop.auto=true) matched (OnPrope.
  3. VC中三种常见中文内码的转换方法
  4. 2021年N1叉车司机新版试题及N1叉车司机证考试
  5. 【golang】go app 优雅关机 Graceful Shutdown How?
  6. 解决魅族手机不输出Log日志 或者输出部分日志问题
  7. 均值不等式中考_中考数学解题技巧方法
  8. 简单逆向26(c++函数修饰名,md5,动态调试,算法逆向)
  9. ubuntu安装mysql失败了,为啥嘞
  10. UltraVNC源码编译流程