我已经安装了osmocom asn1c 编译器分支aper-prefix
,以获得 TCAP 协议的实现。我已经使用相应的脚本来编译“.asn”文件。C文件生成成功,但是编译得到的C代码时报错,与这行代码有关:
#include <EXTERNAL.h>
事实上,文件EXTERNAL.h 是缺失的(貌似这个编译器不支持EXTERNAL 类型)。有人知道这个问题和可能的解决方案吗?
你有几个选择:
使用此 PR 中更新版本的 asn1c (仍未合并)
从 osmocom 存储库中复制EXTERNAL.h
在所有 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 文件中并在需要的地方导入。