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

#include <EXTERNAL.h>

事实上,缺少文件EXTERNAL.h(似乎此编译器不支持外部类型)。
有人知道这个问题和可能的解决办法吗?

最佳答案

你有几个选择:
使用newer version of asn1c from this PR(仍未合并)
从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文件中,并在需要时导入。

关于c - 编译osmocom asn1c生成的C代码时出现问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53632962/

10-10 12:30