Décodeur ASN1C DER
-
29-10-2019 - |
Question
J'essaie de créer un décodeur DER simple - une application console qui affiche simplement le contenu d'une structure de données donnée (encodée au format DER, comme celui-ci ).
J'ai des problèmes avec l'exécution de cet exemple: Un décodeur '' Rectangle '' .
J'essaye de le compiler avec MSVC et j'ai des problèmes avec #include <inttypes.h>
et #include <netinet/in.h>
. De plus, le type ssize_t
n'est pas défini.
Voici ce que j'ai fait pour le moment:
1. Au compilateur ASN.1 en ligne , j'ai collé ce code dans le champ de texte:
RectangleModule1 DEFINITIONS ::=
BEGIN
Rectangle ::= SEQUENCE {
height INTEGER,
width INTEGER
}
END
2. J'ai sélectionné les options "Utiliser les types de machines natifs" et "Générer l'assistance PER" .
3. Il "Compilé OK" , j'ai donc téléchargé ce résultat .tgz
4. Création d'un projet vide dans Visual Studio 2010, fichiers sources par glisser-déposer extraits de ce .tgz
5. Définissez le répertoire d'inclusion supplémentaire sur le répertoire "squelettes" de ASN1C
6. J'ai essayé de le construire.
Que me manque-t-il?
Toute aide serait appréciée
La solution
Le problème est que le code généré par ASN1C doit être modifié afin de le compiler avec MSVC et de l'utiliser dans l'environnement Windows.
-
#include <inttypes.h>
doit être remplacé par#define ssize_t SSIZE_T
-
#include <netinet/in.h>
doit être remplacé par#include <Winsock2.h>
- le mot-clé
inline
doit être supprimé des fonctionsstatic
définies dansasn_internal.h
Après cela, tout fonctionne bien;)
Autres conseils
Assurez-vous que vous disposez d'un fichier de définition ASN correct.Puis allez au lien http://lionet.info/asn1c/asn1c.cgi
collez votre définition ASN dans la fenêtre donnée.Appuyez sur le bouton "Procéder à la compilation ASN.1".Si vous rencontrez une erreur de compilation, corrigez-les.Une fois la compilation réussie, le code de votre décodeur sera généré.Essayez-le, c'est bien.