2

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

#include <EXTERNAL.h>

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

4

1 回答 1

1

你有几个选择:

  1. 使用此 PR 中更新版本的 asn1c (仍未合并)

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

  3. 在所有 asn 文件中重命名EXTERNALEXTERNALt,并在具有 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 文件中并在需要的地方导入。

于 2018-12-05T15:56:48.843 回答