2 votes

Quels paramètres sont nécessaires dans Xcode pour que ce code puisse être compilé

Prenez ce code qui se trouve dans un fichier d'en-tête. Le projet lui-même est en Objective-C++ (.h & .mm).

Cela ressemble à un mélange de C++ et d'Objective-C. D'après ce que j'ai lu, pour mélanger Objective-C++ avec Objective-C, il faut garder tout le code C++ en dehors du fichier d'en-tête, cependant ce n'est pas le cas ici.

Le projet se construit correctement, cependant je ne peux pas reproduire ceci dans un nouveau projet (en copiant le même code).

Quels paramètres sont nécessaires dans Xcode pour que cela se construise ? J'ai déjà comparé les paramètres de construction du projet et ils sont identiques.

Les erreurs sont liées aux initialisateurs en ligne à l'intérieur de la struct Options.

/*
  Ce fichier fait partie du Structure SDK.
  Droits d'auteur © 2019 Occipital, Inc. Tous droits réservés.
  http://structure.io
*/

#import 
#import 

#import 
#import 

#import "CalibrationOverlay.h"
#import "MeshViewController.h"
#import "SettingsPopupView.h"

// Voir l'initialisation par défaut dans : -(void)initializeDynamicOptions
struct DynamicOptions
{
    bool depthAndColorTrackerIsOn;
    bool improvedTrackingIsOn;
    bool highResColoring;
    bool improvedMapperIsOn;
    bool highResMapping;
    STCaptureSessionPreset depthStreamPreset;
};

struct Options
{
    // La taille initiale du volume de numérisation sera de 0.5 x 0.5 x 0.5 mètres
    // (X est gauche-droite, Y est haut-bas, Z est avant-arrière)
    const GLKVector3 initVolumeSizeInMeters = GLKVector3Make (0.5f, 0.5f, 0.5f);

    // Le nombre maximal de trames clés enregistrées dans keyFrameManager
    int maxNumKeyFrames = 48;

    // Qualité du colorisateur
    STColorizerQuality colorizerQuality = STColorizerHighQuality;

    // Prendre une nouvelle trame clé si la différence de rotation est supérieure à 20 degrés.
    float maxKeyFrameRotation = 20.0f * (M_PI / 180.f); // 20 degrés

    // Prendre une nouvelle trame clé si la différence de translation est supérieure à 30 cm.
    float maxKeyFrameTranslation = 0.3; // 30 cm

    // Seuil pour considérer que le mouvement de rotation a été suffisamment petit pour qu'une trame soit acceptée
    // comme trame clé. Cela évite de capturer des trames clés avec un fort flou de mouvement / obturateur roulant.
    float maxKeyframeRotationSpeedInDegreesPerSecond = 1.f;

    // Si nous devons utiliser la profondeur alignée sur le point de vue couleur lorsque le Structure Sensor a été calibré.
    // Ce paramètre peut être écrasé à false si aucune caméra couleur ne peut être utilisée.
    bool useHardwareRegisteredDepth = false;

    // Activer une correction de précision de la profondeur coûteuse par trame.
    // Remarque : cette option nécessite que useHardwareRegisteredDepth soit défini sur false.
    const bool applyExpensiveCorrectionToDepth = true;

    // Si le coloriseur doit faire plus d'efforts pour préserver l'apparence de la première trame clé.
    // Recommandé pour les scans de visages.
    bool prioritizeFirstFrameColor = true;

    // Nombre cible de faces du maillage texturé final.
    int colorizerTargetNumFaces = 50000;

    // Position focal de la caméra couleur (entre 0 et 1). Doit rester fixe une fois que le streaming de profondeur
    // a débuté lorsque l'utilisation de la profondeur enregistrée par matériel est activée.
    const float lensPosition = 0.75f;
};

...
@interface ViewController : UIViewController 
{
...
}
@end

Quelques détails sur les erreurs également :

entrez ici la description de l'image

1voto

pmdj Points 5911

Je suppose que vous n'incluez ce fichier en-tête que depuis des fichiers .mm.

Les valeurs par défaut des champs de structure sont une nouvelle fonctionnalité de C++11. Le standard C++ dans le nouveau projet est-il peut-être défini sur C++98?

Je ne suis pas sûr à 100% des détails, mais peut-être que certaines expressions de valeur par défaut plus complexes ne sont possibles que dans une version encore plus récente de C++. Je vous suggère donc d'essayer de changer la version du standard C++ dans le projet et de voir si cela a un effet.

Réglage du dialecte du langage C++ dans Xcode

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X