Jump to content
Règlement du forum ×
IPTV et arnaques ×

Qt4


abitaf

Recommended Posts

je suis entrain de programmer une application avec QT4 et g une librairie que g programmer en C g bien rajouter dans le header mabib.h :

 

#ifdef __cplusplus

extern "C" {

#endif

 

#endif

#ifdef __cplusplus

}

 

mais g toujours un pbm lors du linkage indefined reference to ... qqn a une idée :confused:

Edited by abitaf
Link to comment
Share on other sites

#ifndef LIB_MAQAO

#define LIB_MAQAO

 

#ifdef __cplusplus

extern "C" {

#endif

 

extern int project_create();

 

extern int project_open(char* projectfile);

 

extern int project_save(char* filename);

 

extern int project_close();

 

extern int project_asmfile_count();

 

extern char *project_asmfile_get(int index);

 

extern char *load(char *filename);

 

extern char* db_filename(char *asmfile);

 

extern char* source_filename(char * asmfile);

 

extern int unload(char * asmfile);

 

extern int get_block_lines(char *asmfile, int blockid, int *srcline);

 

extern int function_count(char *asmfile);

 

extern char *function_iter(char *asmfile);

 

extern char *get_function_name(char *asmfile,int id);

 

extern int print_assembly(char* asmfile, char* filename);

 

extern int print_decorated();

 

extern char* save_project_call_graph();

 

extern char* save_call_graph(char *asmfile);

 

extern char* save_control_flow_graph(char *asmfile, int function_global_id, int type);

 

extern char* save_ddg(char *asmfile, char *blocks,int length);

 

extern int instrumenter_command(char* asmfile, char command, char* arg1);

 

extern char *ii_cmd(char *buff);

 

extern void ii_load_file(char *file);

 

extern void ii_init(void);

 

extern void ii_init_batch(int shellinit);

 

extern void oracle_init();

 

extern void oracle_execute(char *asmfilename);

 

extern void oracle_set_current_filename(char *assemblyfilename);

 

extern void ddg_init();

 

extern void ddg_execute(char *asmfilename, char *blocks,int length,int mode);

 

 

#ifdef __cplusplus

}

#endif

 

#endif /* LIB_MAQAO */

Link to comment
Share on other sites

#ifndef LIB_MAQAO

#define LIB_MAQAO

 

#ifdef __cplusplus

extern "C" {

#endif

 

extern int project_create();

 

extern int project_open(char* projectfile);

 

extern int project_save(char* filename);

 

extern int project_close();

 

extern int project_asmfile_count();

 

extern char *project_asmfile_get(int index);

 

extern char *load(char *filename);

 

extern char* db_filename(char *asmfile);

 

extern char* source_filename(char * asmfile);

 

extern int unload(char * asmfile);

 

extern int get_block_lines(char *asmfile, int blockid, int *srcline);

 

extern int function_count(char *asmfile);

 

extern char *function_iter(char *asmfile);

 

extern char *get_function_name(char *asmfile,int id);

 

extern int print_assembly(char* asmfile, char* filename);

 

extern int print_decorated();

 

extern char* save_project_call_graph();

 

extern char* save_call_graph(char *asmfile);

 

extern char* save_control_flow_graph(char *asmfile, int function_global_id, int type);

 

extern char* save_ddg(char *asmfile, char *blocks,int length);

 

extern int instrumenter_command(char* asmfile, char command, char* arg1);

 

extern char *ii_cmd(char *buff);

 

extern void ii_load_file(char *file);

 

extern void ii_init(void);

 

extern void ii_init_batch(int shellinit);

 

extern void oracle_init();

 

extern void oracle_execute(char *asmfilename);

 

extern void oracle_set_current_filename(char *assemblyfilename);

 

extern void ddg_init();

 

extern void ddg_execute(char *asmfilename, char *blocks,int length,int mode);

 

 

#ifdef __cplusplus

}

#endif

 

#endif /* LIB_MAQAO */

 

The header looks fine. Without seeing the code and what you're trying to do I cannot be of big help. Undefined reference means that one/multiple functions were defined but never implemented.

 

What is the exact error message you're getting?

Link to comment
Share on other sites

project_create() est définie dans libmaqao.c qui est compilé avec gcc pour produire libmaqao.so que je lie avec mon projet Qt4 -L/home/abitaf/local/lib

il n'y a pas d'erreur de compilation l'erreur elle est a l'édition de lien ?

 

 

Try to include libmaqao.c in your project since you already added the extern directive, the c++ compiler will recognize it as c code.

Link to comment
Share on other sites

libmaqao est composé de plusieurs source voici le makefile :

 

ficihier Makefile.config :

### Executables

 

CC=gcc

DOXYGEN=/usr/bin/doxygen

SWIG=/usr/bin/swig

LEX=/usr/bin/flex

YACC=/usr/bin/bison

SQLITE=/usr/bin/sqlite3

 

### Flags

LEXLIB=-lfl

CFLAGS=-O2 -Wall -I. -I.. -DDEBUG -g -O2 -I/home/abitaf/local/include -I/usr/include/lua5.1 -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib/perl/5.8/CORE

LDFLAGS= -L/home/abitaf/local/lib -lm -L. -lm -llua5.1 -lsqlite3 -ldl -lmhash

 

fichier Makefile :

############################################################################

############################################################################

include ../Makefile.config

 

CFLAGS += $(EXTRA_FLAGS)

 

SRCS=type.c sqlite.c file.c asm.c flow_graph.c dominance.c lex.mir.c mir.tab.c instrumenter.c hotpath.c md5.c parser.c printer.c printer_common.c \

ia64/lexer.c ia64/printer.c ia64/printer_tools.c ia32/lexer.c ia32/printer.c \

ia64/libii64.c ia32/libii32.c

 

LIBOBJ=ia32/lex.ia32.o ia64/lex.ia64.o ia64/lex.ia64dump.o libmaqao.o ia32/libii32.o ia64/libii64.o libii.o

 

SUBDIRS=ia32 ia64

 

all:

@for i in $(SUBDIRS); \

do \

cd $$i && $(MAKE) || exit 1; cd ..; \

done

$(MAKE) libmaqao.so maqao-parser maqao-instrumenter

 

.PHONY: all doc clean

 

maqao-parser: maqao.o libmaqao.so

$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ -L. -lmaqao -pg

 

maqao-instrumenter: maqaoinstru.o libmaqao.so

$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ -L. -lmaqao -pg

 

libmaqao.so: $(SRCS:%.c=%.o) $(LIBOBJ)

$(CC) -shared -o $@ $^ $(LDFLAGS) $(LEXLIB) -pg

 

doc: ${SRCS:%.c=%.h} libmaqao.h Doxyfile

$(DOXYGEN) Doxyfile

 

clean:

@for i in $(SUBDIRS); \

do \

cd $$i && $(MAKE) clean && cd ..; \

done

-@rm -f *.o *~ *.so mir.tab.c mir.tab.h lex.mir.c maqao-instrumenter maqao-parser

 

distclean:

-@rm -f config.h

 

lex.mir.c: mir.l mir.tab.h

${LEX} -Pmir mir.l

 

mir.tab.h:mir.tab.c # fake dependency

 

mir.tab.c: mir.y hotpath.h sqlite.h

${YACC} -d -p mir -o mir.tab.c mir.y

 

type.o: type.h

sqlite.o: debug.h type.h asm.h sqlite.h file.h

asm.o: debug.h asm.h type.h

md5.o: md5.h

file.o: file.h config.h

flow_graph.o: debug.h asm.h type.h flow_graph.h

dominance.o: debug.h asm.h type.h flow_graph.h dominance.h

sqlite.o: debug.h asm.h type.h flow_graph.h dominance.h sqlite.h ../sql/create.sql

libmaqao.o: asm.h flow_graph.h printer.h parser.h dominance.h sqlite.h file.h libii.h

hotpath.o: hotpath.h asm.h debug.h type.h

instrumenter.o:instrumenter.h mir.tab.h

 

question : est-ce que je doit compiler libmaqao avec g++ ? normalement il est possible de lié un code compilé avec g++ avec une libraire compilé avec gcc ?

Link to comment
Share on other sites

merci pour l'aide je vien de resoudre le probleme moi je rajouter ma bib avec :

g++ -L/home/abitaf/local/lib

 

au lieu de ca il faut faire :

g++ -L/home/abitaf/local/lib -lmaqao :)

 

maintenant je passe a un autre problème g un composent QTextEdit dans ma fenêtre pour l'édition de source je voudrai qu'il m'affiche le numéro de la ligne a gauche qqn a une idée g trouvé des source qui font sa mais en complique il définisse un composant personnalisé avec l'héritage et redéfinisse plein de fonction moi je veux quelque chose de simple

 

encore merci beaucoup :D

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Posts

    • Un vent de panique souffle dans les aéroports, les administrations, les urgences et de nombreux médias. Depuis vendredi matin, Microsoft fait face à des difficultés informatiques majeures. Elles sont liées à une panne de service touchant un logiciel antivirus proposé par la société Crowstrike. Dans un communiqué, Microsoft indique : « Nous enquêtons sur un problème affectant la capacité des utilisateurs à accéder à diverses applications et services Microsoft 365 ». Le géant américain, à l’origine du système d’exploitation Windows, ajoute qu’il prend « mesures d’atténuation ». En attendant un rétablissement complet de la situation, des aéroports du monde entier (Berlin, Madrid, France…) et des compagnies aériennes (Air France, American Airlines, United Airlines…) connaissent de graves perturbations. Les principales compagnies américaines viennent d’ailleurs de suspendre leurs vols. KLM fait savoir dans un communiqué : « KLM, comme d’autres compagnies aériennes et aéroports, a également été touchée par la panne informatique mondiale, rendant impossible la gestion des vols ». La compagnie se dit « contrainte de suspendre la majeure partie de ses opérations ».
    • Installation de l'application SmartTUBE sur les Smart Tv LG (sous webOS) Si vous êtes client SmartLabs, veuillez vous rendre sur votre SmartLabs . espace Wiki Sinon, vous pouvez essayer notre application de démonstration Lime . Pour obtenir la dernière version, veuillez contacter l' équipe commerciale . Téléchargez le package d'application destiné aux téléviseurs intelligents LG à partir de la page Notes de version du logiciel . Ouvrez la CLI et saisissez ares-install --device %Name% %app_path% (par exemple, ares-install --device lgtest c:\lime_v6_14_21_295_1080.ipk ). Saisissez ares-install --device %Name% --list et vérifiez que l'application a été ajoutée à la liste. Ouvrez le menu Mes applications sur le téléviseur et démarrez l'application installée. Installer manuellement l'application SmartTUBE sur les smart tv LG (Sous WebOS). Si vous n'êtes pas client SmartLabs:        1. démarrer votre smart tv LG Appuyez sur le bouton Paramètres et ouvrez Tous les paramètres > Général > Pays de diffusion   sur votre téléviseur et définissez le Pays sur la même valeur que celle utilisée lors de la création du compte. Tournez Set automatiquement sur OFF et définissez  le pays des services LG de la même manière que le pays de diffusion .  Redémarrez votre téléviseur et acceptez le contrat de licence (tous les articles). Connectez-vous sur le téléviseur avec le compte développeur LG. Ouvrez LG Store, recherchez l' application en mode développeur et installez-la. Démarrez l' application en mode développeur . Connectez-vous à l'application avec votre ID utilisateur de développeur LG .   Définissez l'état du mode Dev  :  ON et confirmez le redémarrage du téléviseur (si vous utilisez la connexion WiFi, vous devrez gérer et revoir les paramètres réseau après le redémarrage.) Démarrez l' application en mode développeur et définissez Key Server : ON   Installez l' application webOS TV CLI sur votre PC. Vérifiez que votre PC et votre téléviseur sont connectés au même réseau, puis démarrez webOS TV CLI . Saisissez la commande ares-setup-device en mode console. Vous devriez voir 3 variantes : add , modifier , supprimer . Choisissez Ajouter . Définissez les paramètres de connexion suivants :  Nom de votre téléviseur — n'importe quoi, par exemple lgtest ;  Adresse IP — Adresse IP du téléviseur (vous pouvez la trouver dans l' application en mode développeur ) ; Port de périphérique  : utilisez la valeur par défaut ; Utilisateur SSH  : utilisez la valeur par défaut ; Description — n'importe quelle chaîne ; Authentification — mot de passe ou password; Mot de passe — laissez vide , appuyez sur Entrée ; Saisissez « Y » pour enregistrer le paramètre.                                       Saisissez la commande ares-setup-device -list et vous devriez voir votre téléviseur dans la liste des appareils. Saisissez la commande ares-novacom --device %Name% --getkey et saisissez la phrase secrète (vous pouvez la trouver dans l' application en mode développeur ). Votre téléviseur est maintenant connecté au PC avec WebOS CLI.
    • Essaye de te connecter sur ton compte dans le panel de ton fournisseur via un navigateur web en utilisant cette syntaxe: Ceci est un contenu masqué, merci de Sign In or Sign Up
    • Android Lollilop  et Android TV v5.0 : Fin des services Google play . Mauvaise nouvelle pour les utilisateurs du system Android v5.0 (Smart TV 5.0 et smartphones ou tablettes Lollilop) Google a décidé de mettre fin aux services Google play. Les Services Google Play ne sont pas une simple application comme on en connaît habituellement. Si vous tenteriez de l'ouvrir, rien ne se passera. Pourtant, son installation est par défaut sur tous les appareils Android. Ils sont mis à jour régulièrement, et le nombre de permissions qu'ils demandent est impressionnant. Tout y passe : lecture des SMS, maîtrise du mode veille, accès à toutes les informations des applications Google... Et j'en passe. En résumé, l'application Services Google Play est une application liée au système même de votre Android.  Voir la liste des applications qui ne fonctionneront plus ou partiellement sans les services Google Play ==>  ICI.  
×
×
  • Create New...