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

Était-ce utile?

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.

  1. #include <inttypes.h> doit être remplacé par #define ssize_t SSIZE_T
  2. #include <netinet/in.h> doit être remplacé par #include <Winsock2.h>
  3. le mot-clé inline doit être supprimé des fonctions static définies dans asn_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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top