2010-06-09 10 views
3

Je travaille sur un système ubuntu. Mon but est essentiellement de créer un IDE en langage C en utilisant les outils graphiques de TCL/TK. J'ai installé tcl 8.4, tk8.4, tcl8.4-dev, tk8.4-dev et ai les dossiers d'en-têtes tk.h et tcl.h dans mon système. Mais, quand je cours un programme basique de base, il montre beaucoup d'erreurs.y compris tk.h et tcl.h dans le programme c

#include "tk.h" 
#include "stdio.h" 
void hello() { 
    puts("Hello C++/Tk!"); 
} 
int main(int, char *argv[]) 
{  init(argv[0]); 
    button(".b") -text("Say Hello") -command(hello); 
    pack(".b") -padx(20) -pady(6); 
} 

Certaines erreurs sont

tkDecls.h:644: error: expected declaration specifiers before ‘EXTERN’ 

/usr/include/libio.h:488: error: expected ‘)’ before ‘*’ token 

In file included from tk.h:1559, 
       from new1.c:1: 
tkDecls.h:1196: error: storage class specified for parameter ‘TkStubs’ 
tkDecls.h:1201: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token 

/usr/include/stdio.h:145: error: storage class specified for parameter ‘stdin’ 

tk.h:1273: error: declaration for parameter ‘Tk_PhotoHandle’ but no such parameter 

Quelqu'un peut-il s'il vous plaît me dire comment puis-je corriger ces erreurs? S'il vous plaît aider ...

+4

Il ne sert à rien d'afficher certaines erreurs sélectionnées. Pratiquement toujours, seule la première erreur d'un compilateur est informative car toutes les autres sont des erreurs de suivi. Et la plupart du temps, la première erreur indique assez clairement ce qui s'est mal passé. Alors, quelle est la sortie réelle? –

+0

tcl est parfaitement appelable depuis 'c' - c'est probablement une erreur dans votre configuration. Quel système d'exploitation et quel compilateur utilisez-vous? –

+0

C ou C++? Choisissez-en un. –

Répondre

0

mais ... ne devriez-vous pas utiliser <> pour l'ensemble du système ?! et button("..") -text("...") .. n'est pas bonne grammaire C, sauf si tk.h donne des macros puissantes button et -text (ce qui est problématique, c'est-à-dire impossible), et je soupçonne que ce n'est pas le cas (en fait ce n'est pas le cas) ...

Vous pourriez être intéressé par this, et aussi une lecture à this et creuser vaut la peine; et aussi (plus intéressant pour vous peut-être), lisez par exemple. this

+0

Je suspecte la construction d'une interface en utilisant directement Tk lib est plus complexe que prévu – ShinTakezou

+0

merci beaucoup pour les liens ...... on m'a assigné cette tâche et je dois la terminer. merci encore – user362075

4

Ce programme n'est pas valide du tout. Ce que vous essayez de faire est d'intégrer Tcl et Tk dans votre application C. Lisez les sections pertinentes dans un livre Tcl/Tk ou recherchez le Tcl Wiki (par exemple 1).

Pour exécuter les commandes Tcl ou Tk, vous devez avoir un Tcl_Interp correctement initialisé. Donc, au minimum, vous devez initialiser la bibliothèque Tcl et créer un interpréteur. Ensuite, pour Tk, vous devrez initialiser cette bibliothèque et lancer une boucle d'événement. La documentation pour Tcl_AppInit traite de cela et le fichier tclAppInit.c dans la source Tcl (ou tkAppInit.c dans Tk) vous montre comment configurer votre application. Généralement, vous utiliseriez le fichier tkAppInit fourni comme "principal" et vous placeriez l'initialisation de votre application personnalisée dans une fonction Tcl_AppInit appelée à partir de la fonction principale Tcl ou Tk. L'appel des fonctions Tk à partir de C est mal conseillé.

Définir des scripts et écrire les bits Tk dans Tcl. Même Tk crée lui-même des boîtes de dialogue standard et autres en utilisant des scripts Tcl (à partir de library/*.tcl).

+1

+ 1 l'intégration d'un interpréteur tcl ne signifie pas que vous pouvez écrire tcl en ligne avec c –