3
votes

La version de l'application Cocos2d-x 4.0 ne fonctionne plus après la mise à niveau vers macOS Big Sur 11.01 (erreur: aucun fichier ou répertoire de ce type: '/usr/lib/libz.dylib')

Après la mise à niveau vers macOS Big Sur 11.01, j'obtiens l'erreur suivante:

clang: error: aucun fichier ou répertoire de ce type: '/usr/lib/libz.dylib' clang: error: aucun fichier ou répertoire de ce type: '/usr/lib/libiconv.dylib' La commande Ld a échoué avec un code de sortie différent de zéro

Comment reproduire: créer un nouveau projet cocos2d-x en utilisant:

  • cocos -n -d nom rép -l cpp
  • cd dirname / MyCppGame
  • mkdir build-iphone
  • cd build-iphone
  • cmake .. -GXcode -DCMAKE_SYSTEM_NAME = iOS -DCMAKE_OSX_SYSROOT = iphoneos

Ouvrez le projet xcode généré (changez l'identifiant du bundle) et construisez

Versions:

  • macOS Big sur 11.01
  • CMake 3.18 ou CMake 3.19.0-rc3
  • cocos2d-x v4.0
  • Xcode 12.2

0 commentaires

3 Réponses :


1
votes

J'ai vérifié dans le dossier /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib

les fichiers libz.dylib et libiconv.dylib n'existent pas. Je pense que vous devriez utiliser les fichiers libz.tbd et libiconv.tbd

Projet / Paramètres de construction / Autres indicateurs de l'éditeur de liens


2 commentaires

Je les ai supprimés des paramètres de construction (autres indicateurs de lien) et les ai ajoutés aux phases de construction. Cette solution manuelle fonctionne, merci pour cela. Mais comment puis-je faire cela avec cmake?


vous pouvez vous référer dans le fichier {your_project_name} /cocos2d/cmake/Modules/CocosConfigDepend.‌ cmake



3
votes

J'ai changé le fichier: 'CocosConfigDepend.cmake' dans cmake / modules / de la bibliothèque cocos2d-x v4.0.

    elseif(IOS)
        # Locate system libraries on iOS
        find_library(UIKIT_LIBRARY UIKit)
        find_library(OPENGLES_LIBRARY OpenGLES)
        find_library(CORE_MOTION_LIBRARY CoreMotion)
        find_library(AVKIT_LIBRARY AVKit)
        find_library(CORE_MEDIA_LIBRARY CoreMedia)
        find_library(CORE_TEXT_LIBRARY CoreText)
        find_library(SECURITY_LIBRARY Security)
        find_library(CORE_GRAPHICS_LIBRARY CoreGraphics)
        find_library(AV_FOUNDATION_LIBRARY AVFoundation)
        find_library(WEBKIT_LIBRARY WebKit)
   
        find_library(ZLIB z)
        find_library(ICONVLIB iconv)

        list(APPEND PLATFORM_SPECIFIC_LIBS
             ${UIKIT_LIBRARY}
             ${OPENGLES_LIBRARY}
             ${CORE_MOTION_LIBRARY}
             ${AVKIT_LIBRARY}
             ${CORE_MEDIA_LIBRARY}
             ${CORE_TEXT_LIBRARY}
             ${SECURITY_LIBRARY}
             ${CORE_GRAPHICS_LIBRARY}
             ${AV_FOUNDATION_LIBRARY}
             ${WEBKIT_LIBRARY}
             ${COCOS_APPLE_LIBS}
             ${ZLIB}
             ${ICONVLIB}
             #"/usr/lib/libz.dylib"
             #"/usr/lib/libiconv.dylib"
             )
    endif()

Ajout du ZLIB et ICONVLIB et suppression des lignes de chemin d'accès complet.


1 commentaires

Cela ressemble plus à un hack. Nous avons besoin d'une solution appropriée à ce problème. Avez-vous essayé d'installer les bibliothèques à l'aide d'un gestionnaire de paquets comme Homebrew? Voici les liens: formulae.brew.sh/formula/libiconv et formulae.brew.sh/formula/zlib



0
votes

Pour un projet existant, supprimez simplement en dessous de deux lignes de «Autre indicateur de l'éditeur de liens»

/usr/lib/libz.dylib
/usr/lib/libiconv.dylib

Dans Xcode Build Phases, la section Link Binary With Libraries supprime également lib.dylib et ajoute libz.tbd et libiconv.tbd

Checkout ci-dessous l'image:

entrez la description de l'image ici


0 commentaires