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 :