Проблема в компиляции кода C, сгенерированного osmocom asn1c
Я установил компилятор osmocom asn1c, aper-prefix
филиал, чтобы получить реализацию протокола TCAP. Я использовал соответствующий скрипт для компиляции файлов.asn. Файлы C генерируются успешно, но при компиляции полученного кода C возникает ошибка, связанная с этой строкой кода:
#include <EXTERNAL.h>
На самом деле файл EXTERNAL.h отсутствует (похоже, тип EXTERNAL не поддерживается этим компилятором). Кто-нибудь знает об этой проблеме и возможном решении?
1 ответ
У вас есть несколько вариантов:
Используйте более новую версию asn1c из этого PR (все еще не объединены)
Скопируйте EXTERNAL.h из репозитория osmocom
переименовывать
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 и импортируйте, где это необходимо.