ASN.1
XML
电话技术
免费WEB工具
服务
ASN1C 编译器常见问题解答
下面是关于ASN1C编译器常见问题及解答:
|
你们产品使用了什么类型的ASN.1规范?
支持X.694标准允许ASN.1从XML描述产生高效的XML数据二进制编码? 为什么在CAMEL Application Part (CAP)规范中的类型没有生成代码? 为什么当我试图使用Visual Studio 2005编译例程时,收到错误信息链接:致命错 误LNK1104:无法打开文件'LIBC.lib'? |
|
| Q. | 你们产品使用了什么类型的ASN.1规范? |
| A. | 我们的ASN.1编译器已用于各种各样的项目中,涉及定制和标准的
ASN.1规范。下面是一些标准的规范:
|
| Q. | 编译器如何处理信息对象和参数类型? |
| A. | ASN1C编译器获取含在这些定义内的主要类型定义,为这些类型生成准确的
C/C++ 及/或 Java 编码器/解码器。有时涉及到通过参数定义和类层向后链接,获取基本类型。编译器也可以从信息对象抽出嵌入类型和值定义,为它们生成代码。 有关进一步的详情,请下载我们的白皮书 ASN1C Support for Information Objects and Parameterized Types 。 |
| Q. | 编译器支持X.682规定的表格约束? |
| A. | ASN1C版本5.4或更高版本可以解析和生成表格约束的代码。多部分消息类型上的约束,约束一个消息的某个部分中出现的域到规范内定义表格中的值。 ASN1C可以生成代码,使用这些表格,允许这些消息类型在一步内编码和解码。 |
| Q. | 由编译器生成源代码? |
| A. | 是的,生成的C 和 C++代码遵从American National Standards Institute (ANSI)标准。 对于C++版本,避免使用非可移植构造如模板,I/O流算子和异常,确保最大的可移植性。可用的运行库版本包括源代码,它也符合ANSI标准,使得ASN1C代码可移植到各种平台。 |
| Q. | 代码可用于实时,嵌入式系统应用? |
| A. | 我们为某些嵌入式目标机提供 C/C++二进制库以及Java的J2ME库或C#的C#紧凑版库。为我们没有二进制库的平台可以提供源代码。 可以编辑该代码以包括完成特定编解码任务所绝对必需的(你可以自己做,或者我们为你创建一个定制包)。这将允许你用较小的量创建代码,适合空间约束的系统。 |
| Q. | 支持ASN.1标准中所有规定的语句吗? |
| A. | 我们可以解析1990到2002标准中定义的所有语句。为多数条目生成等价的 C, C++, 或 Java代码。有关目前不支持条目的信息,请参见我们最新的 release notes 。 |
| Q. | 代码考虑过开放源吗? |
| A. | 取决于你对开放源的定义。它并不是GNU意义上的可供免费下载。 但是可用的产品版本包括运行C和C++源代码,允许最终用户移植他们的应用到更广泛的平台。 |
| Q. | ASN1C支持旧的Remote Operation Support Element (ROSE) MACRO 标记(OPERATION, ERROR, etc..)? |
| A. | ASN1C编译器有一个 '-1990'开关,支持这个标记。这些关键词并没有被置于标准的ASN1C编译器内,因为它们可能会和其它关键词冲突。描述ROSE MACRO支持的文章可在 这里得到。 |
| Q. | ASN1C支持X.694标准允许ASN.1从XML描述产生高效的XML数据二进制编码? |
| A. | 这方面的支持计划添加到XBinder XML编译器。这将允许开发人员使用 XML(XSD)对给定描述生成编码器/解码器,它既可以生成 W3C标准XML,也可以生成ITU-T/ISO标准 BER 或PER 二进制编码。 |
| Q. |
在CAMEL Application Part (CAP)规范中的许多ASN.1类型定义没有生成类型/类和编码器/解码器。
有以下普遍的形态:AccessPointName {PARAMETERS-BOUND: bound} ::= OCTET STRING (SIZE( bound.&minAccessPointNameLength .. bound.&maxAccessPointNameLength)) 为什么会这样? |
| A. | 当使用一个提供的参数具体实例化时,从它们只生成参数化类型和代码。不幸的是,在CAP中,这些 是在被除去了几个它们所需层次的信息对象中进行的。为了提供一种方法在他们定义层次上创建这些类型的具 体表述,-param命令行参数被添加到ASN1C中。对于CAP,添加"-param bound=CAP-classes.cAPSpecificBoundSet" 到ASN1C命令行中将提供所有这些类型的具体实例。 |
| Q. | 当生成许多ASN.1规范的代码时,某些项的名称非常长。有什么办法让它们短点吗? |
| A. | 默认地,ASN1C为其生成的附加类型创建名称是连接该项所有中间嵌套名称而成的。 在说明很多重的嵌套结构时,这可能导致非常长的名称。在这种情况下可以使用-shortnames 限定 词生成短一些的名称。 |
| Q. | 为什么当我试图使用Visual Studio 2005编译例程时,收到错误信息链接:致命错 误LNK1104:无法打开文件'LIBC.lib'? |
| A. | 此错误通常是因为试图链接示例程序到不正确的库上。与例程一起提供的ASN1C Windows包 默认使用Visual Studio 6.0编译的库。与Visual Studio 2005中使用的库在c_vs2005和cpp_vs2005目录中提供。 拷贝例程到适当的目录中会解决问题。 |
| Q. | osyslic.txt文件如何在asn1rt.jar中使用? |
| A. | 不像C,C++和C#,Java runtime在runtime本身中执行许可检查,而不是产生辅助代码(见 rtkey.h和* Values.cs)。当签发许可时(例如,无论是在购买时或之后主机名更新时),用户应使用setkey.bat (Windows)或setkey.sh(在UNIX,Linux,MacOS X)脚本来更新在JAR中的许可证文件。然后更新后的JAR文件可 以复制到部署的主机上。其他信息可以在我们的文档页面中的ASN1C安装指南中找到。 |
| Q. | 如何在ASN.1规范中指定模块或产品的不同的整数类型? |
| A. | 默认情况下,非约束整数类型是32位宽。如果一个规范约束了整数值的大小,ASN1C将生成 尝试使用最小宽度类型的代码(例如,一个8位类型的尺寸(1 .. 255)约束)。如果这是不可取的,可用一个 配置文件 替代指定整数类型。点击此处获取配置文件范例。 |
