Проблема в компиляции кода C, сгенерированного osmocom asn1c

Я установил компилятор osmocom asn1c, aper-prefix филиал, чтобы получить реализацию протокола TCAP. Я использовал соответствующий скрипт для компиляции файлов.asn. Файлы C генерируются успешно, но при компиляции полученного кода C возникает ошибка, связанная с этой строкой кода:

#include <EXTERNAL.h>

На самом деле файл EXTERNAL.h отсутствует (похоже, тип EXTERNAL не поддерживается этим компилятором). Кто-нибудь знает об этой проблеме и возможном решении?

1 ответ

Решение

У вас есть несколько вариантов:

  1. Используйте более новую версию asn1c из этого PR (все еще не объединены)

  2. Скопируйте EXTERNAL.h из репозитория osmocom

  3. переименовывать EXTERNAL в EXTERNALt во всех asn-файлах и добавьте следующее в asn-файлы с EXTERNALt.

    --
    -- 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 и импортируйте, где это необходимо.

Другие вопросы по тегам