编译osmocom asn1c生成的C代码时出现问题

时间:2018-12-05 13:01:24

标签: c asn.1 ss7 asn1

我已经安装了aper-prefix分支osmocom asn1c compiler,以获得TCAP协议的实现。 我已经使用respective script来编译“ .asn”文件。 C文件已成功生成,但是在编译获得的C代码时,将引发与以下代码行相关的错误:

#include <EXTERNAL.h>

实际上,缺少文件EXTERNAL.h(似乎此编译器不支持EXTERNAL类型)。 有人知道这个问题以及可能的解决方案吗?

1 个答案:

答案 0 :(得分:1)

您有几种选择:

  1. 使用newer version of asn1c from this PR(仍未合并)

  2. 从osmocom存储库中复制EXTERNAL.h

  3. 在所有asn文件中将EXTERNAL重命名为EXTERNALt,并在具有EXTERNALt的asn文件中添加以下内容。

    --
    -- From "ITU-T Recommendation X.208", "34 The external type"
    --
    EXTERNALt ::= [UNIVERSAL 8] IMPLICIT SEQUENCE
    {direct-reference OBJECT IDENTIFIER OPTIONAL,
        indirect-reference INTEGER OPTIONAL,
        data-value-descriptor ObjectDescriptor OPTIONAL,
        encoding CHOICE
        {single-ASN1-type [0] ANY,
            octet-aligned [1] IMPLICIT OCTET STRING,
            arbitrary [2] IMPLICIT BIT STRING}}
    

    或将其添加到单独的asn文件中,并在需要时导入。