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

Problem in compiling C code generated by osmocom asn1c

我已经安装了 osmocom asn1c compileraper-prefix 分支,以获得 TCAP 协议的实现。 我已经使用 respective script 来编译“.asn”文件。 C文件生成成功,但是在编译得到的C代码时,报错,与这行代码有关:

#include <EXTERNAL.h>

其实是缺少文件EXTERNAL.h(貌似是这个编译器不支持EXTERNAL类型)。 有人知道这个问题和可能的解决方案吗?

您有多种选择:

  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 文件中并在需要的地方导入。