Comment résoudre l’erreur de l’éditeur de liens dans le compilateur C ++

Je dois comstackr PJSIP dans CPP compilateur CPP . Parce que PJSIP une API avec PJSIP . C’est dans le CPP . Je dois donc utiliser g++ au lieu de gcc . Mais maintenant, je n’ai intégré aucune autre API.

Mais je reçois une erreur de l’éditeur de liens dans CPP compilateur CPP . Si c’est C compilateur C , cela fonctionne bien.

Erreur:

  Symboles non définis pour le arm d'architecture:
   "_crypto_alloc", référencé depuis:
       srtp_stream_clone (srtp_stream_ctx_t const *, unsigned int, srtp_stream_ctx_t **) dans libsrtp-arm-apple-darwin9.a (srtp.o)
       srtp_stream_alloc (srtp_stream_ctx_t **, srtp_policy_t const *) dans libsrtp-arm-apple-darwin9.a (srtp.o)
       _srtp_create dans libsrtp-arm-apple-darwin9.a (srtp.o)
   "_aes_icm_context_init", référencé depuis:
       srtp_kdf_init (srtp_kdf_t *, const signé avec char *) dans libsrtp-arm-apple-darwin9.a (srtp.o)
   "_crypto_kernel_load_debug_module", référencé depuis:
       _srtp_init dans libsrtp-arm-apple-darwin9.a (srtp.o)
   "_rdbx_init", référencé depuis:
       srtp_stream_init (srtp_stream_ctx_t *, srtp_policy_t const *) dans libsrtp-arm-apple-darwin9.a (srtp.o)
       srtp_stream_clone (srtp_stream_ctx_t const *, unsigned int, srtp_stream_ctx_t **) dans libsrtp-arm-apple-darwin9.a (srtp.o)
   "_key_limit_clone", référencé depuis:
       srtp_stream_clone (srtp_stream_ctx_t const *, unsigned int, srtp_stream_ctx_t **) dans libsrtp-arm-apple-darwin9.a (srtp.o)
   "_auth_get_tag_length", référencé depuis:
       _srtp_unprotect_rtcp dans libsrtp-arm-apple-darwin9.a (srtp.o)
       _srtp_protect_rtcp dans libsrtp-arm-apple-darwin9.a (srtp.o)
       _srtp_unprotect dans libsrtp-arm-apple-darwin9.a (srtp.o)
       _srtp_protect dans libsrtp-arm-apple-darwin9.a (srtp.o)
 ...
 ... 

En fait, je n’ai rien changé dans le makefile .

REMARQUE: Dans le fichier srtp.c fichier srtp.c déjà inclus. Je l’ai recommandé et compilé. J’ai eu la même erreur d’éditeur de liens seulement. Je pense de deux manières. Mais je ne suis pas sûr de cela.
1. Il ne lie pas avec des fichiers .o
2. Il ne prend pas les fichiers d’en-tête. (Je ne suis pas clair avec cela.)

S’il vous plaît aidez-moi à résoudre ce problème.

    1. Ne comstackz pas le code source C avec un compilateur C ++. Il suffit de le comstackr avec un compilateur C et de le lier à votre programme C ++ en utilisant un éditeur de liens C ++.
    2. Déclarer tous les symboles C dans un bloc extern "C" ; soit envelopper vos directives #include dans un tel bloc, soit les mettre dans les en-têtes eux-mêmes. (Vérifiez s’il n’y a pas déjà un tel blocage dans les en-têtes.)

    Voir aussi Comment mélanger C et C ++ dans la FAQ C ++.

    Lorsque les symboles C deviennent indéfinis dans un programme C++ , cela signifie que leurs déclarations ne sont pas marquées comme extern "C" .

    La manière habituelle de le gérer consiste à envelopper les en-têtes C avec:

     #ifdef __cplusplus extern "C" { #endif // C declarations here #ifdef __cplusplus } #endif 

    C’est une erreur de l’éditeur de liens dans votre projet pjsip. Utilisez-vous xcode ou un autre IDE pour développer ce projet?

    Cette erreur est due au fait que les fichiers ci-dessus ne sont pas liés à votre projet avec succès.

    Ajoutez ce fichier de bibliothèque manquant ci-dessous dans votre projet.

    = >> libsrtp-arm-apple-darwin9.a

    Suivez le lien ci-dessous pour lier votre fichier de bibliothèque à votre projet.

    SOURCE: https://www.chilkatsoft.com/xcode-link-static-lib.asp