Problème avec AquaticPrime framework...

Nihonium

Membre expert
Club iGen
27 Juillet 2008
2 328
530
Hello à tous,

J'ai un souci sous Xcode 3.2.1 qui ne veut pas compiler mon application avec AquaticPrime framework :nailbiting: :

3dOq


je ne trouve pas la nature de cette erreur ni comment y remédier, et j'ai déjà ajouté "-lcrypto" dans la propriété Other Linker Flags de ma target.

Si jamais c'est un souci avec Snow Leopard, est-ce qu'il existe d'autres frameworks de ce type quelque part ?

Merci d'avance pour votre aide... :up:
 
Cette erreur est effectivement provoquée par l'absence d'une librairie dans la commande du linker (option -l de gcc).
Es-tu sûr que le symbole manquant est dans cette librairie crypto ?

Pour voir le contenu de ta lib, il existe la commande "nm".
 
C'est ce qui est recommandé sur le site dans le developer guide, je ne sais pas si effectivement elle est dans cette lib...

Où dois-je taper cette commande nm ?
 
Je suis tenté de baisser les bras, je ne vois pas d'où vient le problème.

J'ai téléchargé un projet tout fait avec AP qui compile sans problème, le souci n'est pas dans mon code car j'ai copié / collé pour voir et le problème est le même.

Ca pourrait venir de ma version de Xcode ?
 
Je suis tenté de baisser les bras, je ne vois pas d'où vient le problème.

J'ai téléchargé un projet tout fait avec AP qui compile sans problème, le souci n'est pas dans mon code car j'ai copié / collé pour voir et le problème est le même.

Ca pourrait venir de ma version de Xcode ?

change la version gcc et downgrade (dans ton target )pour voir, certains c-flags additionels provoquent des erreurs de parsing et autres avec cette version de gcc completement cramée, essaye avec g++ ca semble etre une erreur de linkage c++ ou simplement ajoute libstdc++ pour voir, ca sent vraiment le auto-stub C++ d'un symbol visible
 
tatouille, tu peux me la refaire en chinois j'ai pas compris ? :siffle: :rateau:

Je sais que le problème ce sont les undefined symbols, et ce qui m'embête le plus c'est que ça compile très bien en mode debug mais pas en release.

Je sais plus quoi faire :mouais:
 
tatouille, tu peux me la refaire en chinois j'ai pas compris ? :siffle: :rateau:

Je sais que le problème ce sont les undefined symbols, et ce qui m'embête le plus c'est que ça compile très bien en mode debug mais pas en release.

Je sais plus quoi faire :mouais:

donc compare les deux configs, il y a certainement des C-flags differents, fais tu des optimizations comme unroll loop ?
 
Sinon BSOD tu peux essayer de cleaner ton projet (j'ai déjà eu des problèmes de linkage réglés comme ça).

Après je suis comme toi j'ai toujours eu du mal à comprendre les histoires de compiler flags :D
 
Ce n'est quand même pas compliqué le link, faut juste faire les liens dans le bon sens parce que si on link des symboles avant d'autres, la table de link n'est pas complète et on se retrouve avec des problèmes de symboles non reconnu. C'est le cas classique d'un link fait dans le mauvais sens. :p :D :D
 
Les options de Link sont différentes pour chaque Configuration.
Tu as ajouté les flags de la lib crypto pour la configuration Debug, mais pas pour la config Release (je traduis ce qu'écris Tatouille).

P.S.: AquaticPrime c'est un peu de la merde, je le sais parce que je l'utilise. Contacte-moi pour que je te file le code PHP débogué qui fonctionne aussi avec les noms de clients comportant des accents, ou mieux, utilise plutôt Kagi ou eSellerate, ce qui a l'avantage de te passer de PayPal qui est beaucoup de la merde.
 
Salut à tous,

J'ai cleané tout ça, ça marchait encore pas. Puis j'ai tripoté les build settings, et va savoir, d'un coup ça s'est mis à compiler correctement ! Va comprendre...

Bref, merci à tous pour vos réponses. :up:
 
Va comprendre...

Il y a forcément une explication, la compilation et le link ne se font pas par impositions des mains. C'est important de comprendre ces mécanismes parce que sur des gros projets avec pas mal d'interactions et des développement complexes, si tu ne maîtrise pas un minimum, tu risque de perde un temps énorme pour pas grand chose. :p :D :D
 
Je sais, crois moi ça me tue de ne pas comprendre. hier j'ai passé presque 2 heures à jouer avec les build settings d'un nouveau projet (c'est toujours ce qui me pose problème) pour comprendre ce qui s'était passé.
Et ça reste vague ...
 
Je sais, crois moi ça me tue de ne pas comprendre. hier j'ai passé presque 2 heures à jouer avec les build settings d'un nouveau projet (c'est toujours ce qui me pose problème) pour comprendre ce qui s'était passé.
Et ça reste vague ...

A force d'acharnement, j'ai finalement trouvé ce que j'avais tripoté et qui posait problème pour la compilation:

-> dans les réglages de Targets, je voulais compiler en 32/64bits, alors qu'apparemment on ne peut compiler qu'en 32bits avec Aqua-fuckin-Prime :eek:

cf ce sujet que j'avais créé il y a quelques temps...
 
Il me semble qu'il faut recompiler les frameworks en 64-bits. Ce n'est pas spécifique à AquaticPrime.

Ceci dit, je te conseille de prendre tout le code source d'Aquatic Prime et de l'incorporer dans ton appli. Parce que sinon, je me compile mon propre framework d'AquaticPrime que j'ai modifié, j'ouvre le bundle de ton appli, je vire le framework AquaticPrime que j'y trouve, et y glisse le mien. Voilà, j'ai piraté ton appli en une minute.
 
Il me semble qu'il faut recompiler les frameworks en 64-bits. Ce n'est pas spécifique à AquaticPrime.

Ceci dit, je te conseille de prendre tout le code source d'Aquatic Prime et de l'incorporer dans ton appli. Parce que sinon, je me compile mon propre framework d'AquaticPrime que j'ai modifié, j'ouvre le bundle de ton appli, je vire le framework AquaticPrime que j'y trouve, et y glisse le mien. Voilà, j'ai piraté ton appli en une minute.

:up::love::love::love::D
 
Vous me faites doucement sourire les mecs avec vos remarques sur la sécurité. Fais toi plaisir et code-le ton framework mon ami! Allez, j'te mets au défi tiens :love: Et si tu y arrives, je te balance une licence gratuite pour que tu sois dans la légalité :rateau:

Bon, pour la note plus sérieuse, je n'ai malheureusement pas assez d'expérience en Obj-C pour intégrer tout ça directement dans mon projet, je saurais même pas par où m'y prendre je crois.

C'est vrai que c'est minimal niveau sécurité (et puis faut voir comment j'ai mis la vérification en place à l'arrache!), mais je me dis que de toute façon on n'est pas sur windaube: y'a pas de protecteur, ni d'obfuscateur de code, ni de packer ni rien de tout ça.

Et quand bien même il y en aurait sur Mac, allons-y, parlons un peu de sécurité. Moi même, sur windaube, je sais depuis bien longtemps attraper mon Olly ou mon IDA, et comment trouver l'OEP, poser un breakpoint, dumper la mémoire et reconstruire une IAT après décompression d'un executable. UPX, PElock, Asprotect, Armadillo... les protecteurs/packers ne sont plus qu'une gentille petite partie de rigolade pour les crackers, un petit challenge en plus pour certains peut-être.

Donc l'appli sera crackée quoi qu'il arrive puisque ce qu'un homme fait, un autre peut le défaire.

Après, oui ça m'embête un peu d'ouvrir la porte aux cons, mais si certains sont assez ingrats pour ne pas reconnaitre le boulot, le temps et les difficultés qu'un mec a dû se taper pour développer une appli, aussi insignifiante et simple soit-elle, c'est qu'il est vraiment ignard.
Tout ça, bien souvent, pour s'économiser une poignée d'euro qu'il va dépenser au resto ou dans un paquet de clope le soir même ^^!
Pour dire quand même que la connerie est universelle, le mec va casquer, allez, 20€ pour un repas qu'un autre type a mis 12minutes 30 à cuisiner, et va éviter de payer 5€ pour une application qu'un mec a mis 6 mois à développer... on peut rien faire contre ça!
 
Vous me faites doucement sourire les mecs avec vos remarques sur la sécurité. Fais toi plaisir et code-le ton framework mon ami! Allez, j'te mets au défi tiens :love: Et si tu y arrives, je te balance une licence gratuite pour que tu sois dans la légalité :rateau:

Ce n'est pas si compliqué de programmer son propre système de licence, en tout cas ce sera plus dur à cracker qu'une lib open-source. D'ailleurs le mieux c'est de faire un programme à côté qui gère les licences, ainsi il faut en plus décoder les trames de ton protole maison et désassemblé deux programmes pour avoir une idée de comment sont gérées les licences. Bon maintenant je doute que tu es besoin d'une telle chose mais bon, ce n'est pas si complexe qu'il y parait si on possède quelques bases et pour cracker le système ça prend bien du temps. :p :D :D
 
Vous me faites doucement sourire les mecs avec vos remarques sur la sécurité. Fais toi plaisir et code-le ton framework mon ami! Allez, j'te mets au défi tiens :love: Et si tu y arrives, je te balance une licence gratuite pour que tu sois dans la légalité :rateau:
Mais non, tu n'as pas compris ce que j'ai écris.
Voilà la manip:
- Prendre le code source d'Aquatic Prime (fourni sur le site Aquatic Prime).
- Modifier la méthode -checkLicence: (ou un nom comme ça), pour qu'elle te dise toujours que la licence est valide.
- Compiler (sous forme de Framework).
Ça prend 5 mn.

Maintenant, dès qu'un appli utilise le Framework AquaticPrime:
- j'ouvre le bundle de l'appli
- je prends le framework, le mets à la corbeille et le remplace par ma version modifiée.

Remplacer un fichier par un autre sous le Finder est à la portée de n'importe qui.
Je te dis seulement de prendre le code source d'Aquatic Prime et de le mettre avec tes autres sources.

Le fait qu'AquaticPrime soit livré sous forme de framework me dépasse. En fait, beaucoup de choses avec AquaticPrime me dépassent.