Question

J'ai demandé de résoudre un problème d'utilisation de la mémoire d'une application CAO écrit sur Visual C ++ qui se produit lorsque vous essayez d'exporter le dessin PDF3D.

Exportation de caractéristiques bien se comporte pour les modèles simples ou une partie seulement d'un modèle complexe, mais pas pour un modèle complexe.

Nous utilisons le projet sourceforge U3D pour créer l'objet U3D; après que nous l'insérer dans le PDF. Il est l'objet la création d'une partie qui est problématique.

Le projet U3D sourceforge est une bibliothèque construite en C ++ pour une utilisation en C ++ trop qui est mort depuis 2007, a une mauvaise documentation et la collection de ses échantillons est loin d'être suffisant! Dans la liste TODO du projet est également déclaré qu'il a des problèmes de mémoire!

Alors on m'a demandé d'attaquer le problème en deux parties:

  1. faire l'entretien du code U3D.

  2. Changer la façon dont les interagit application avec la bibliothèque U3D.

Ils ont également dit que la partie 2. preferrable, car il est sous notre contrôle.

Lorsque vous essayez de résoudre le problème, je suis arrivé deux conclusions:

  1. Je suspecte fortement que la méthode U3D Encodex est responsable de mésusage mémoire.

  2. J'ai essayé beaucoup de changements de petites choses pour la façon dont les interagit Apllication avec la lib (modifier les paramètres de compression, drapeaux, etc.) et à chaque fois que le résultat était la mémoire sur-allocation.

La question est: Est-il utile de continuer à utiliser cette bibliothèque? Le code de ce n'est pas une joie de lire ... Ou il pourrait peut-être une bonne idée de regarder d'autres libs pour le même but? Je ne les ai pas explorer, mais je pense sérieusement à passer à VCGlib ou libharu ... s'il vous plaît suggérer quelque chose d'autre si vous savez ce qui est bon.

Les autres solutions de rechange serait la suivante: utiliser Visual Technologies exportateur PDF3D, ce qui a un coût inacceptable, ou de développer ma propre mise en œuvre d'un exportateur U3D, qui aurait les désavantages de son être un ensemble très limité de la fonctionalité U3D et aussi il could'nt se préparer à l'échéance prévue. Alors, prenez ces options interdites.

J'ai vraiment besoin d'aide pour décider ce qui est mieux.

Merci à l'avance, Sérgio

Était-ce utile?

La solution 2

Après quelques nuits de désespoir et de mauvais sommeil, en essayant de découverte des fuites de mémoire ou d'autres troubles de la mémoire, nous avons conclu pour la solution la plus pratique:

Extrait seulement la partie de code nécessaire pour charger un fichier et l'exporter comme U3D à un petit programme et faire l'appel principal de l'application CAO elle. Même si ce n'est pas la solution la plus élégante, cela fonctionne très bien -. Aucun des processus biefs utilisation de la mémoire même près de la barrière 2 Go

Je voudrais avoir été autorisé à résoudre les choses de cette façon auparavant. J'ai proposé d'autres choses comme:

  • migration à 64 bits

  • utiliser une option que les versions modernes de Windows prennent en charge pour l'extension de la limite de mémoire de chaque processus à plus de 2 Go

Aucune de ces deux solutions étaient acceptables, car il serait nécessaire de forcer certains clients à réinstaller le matériel ou les logiciels déjà en cours d'exécution.

Autres conseils

Quelques commentaires: VCGlib - sans rapport avec, MeshLab repose sur VCGlib pour les fonctions de base, mais pour l'outil de ligne de commande à l'exportation U3D à convertir d'un format de texte à U3D est utilisé, et cet outil est de la sf U3D lib. libharu - peuvent intégrer modèles 3D dans sa sortie PDF, créer pas les modèles (U3D ou fichiers PRC)

.

Une autre option est de outoput l'autre format Adobe PDF 3D, République populaire de Chine. Acrobat SDK a la description de format sous forme de pseudo-code. Sur la base de cette sortie RPC a été mis en œuvre dans l'outil Asymptote. Trouvez sur sourceforge et poser des questions au forum Asymptote si vous êtes intéressé.

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