Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Anfängerproblem Tcl/Tk unter C

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
15.02.2007, 16:43 Uhr
~yacci-chan-007
Gast


Hallo zusammen,

Habe mich ins Programmieren mit Tcl/Tk unter windows XP eingearbeitet. Ich verwende Visual Studio 2005 und ActiveState Tcl (8.4.13). Um mich mit der Grundlegenden Arbeitsweise von Tk vertraut zu machen, habe ich folgendes Programm unter Standart C geschrieben:


C++:
#include <stdio.h>
#include <tcl.h>
#include <tk.h>

int main (int argc,char *argv[]){
    Tcl_Interp *interp;
    int number;
    printf("Starte den Interpreter auch mit Tk\n");
    interp=Tcl_CreateInterp();
    Tcl_Init(interp);
    Tk_Init(interp);
    number=Tk_GetNumMainWindows();
    printf("Numbers of Window %i\n", number);
    Tcl_Eval(interp,"puts Hallo");
    Tcl_DeleteInterp(interp);
    exit(0);
}



Beim Versuch das Programm im Debugmodus auszuführen(Release Mode geht bei mir nicht weil der Linker die Symbole nicht findet mir fehlt es noch an Erfahrung mit C) bricht der Debugger erfolglos ab.

Beim Debuggen wird jedoch festgestellt, das das Modul Tk84.dll nicht an die Standartadresse geladen wurde(wie es ausschaut erfolgt ein Abbruch bei Tk_Init()). Das gilt natürlich nicht nur für das Beispielprogramm. Könnte das der Grund für meine Tk-Probleme sein? Wie kann ich das Problem beheben?

Danke im Vorraus.

Dieser Post wurde am 22.02.2007 um 11:40 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.02.2007, 17:35 Uhr
BoBtheREapER
kein job für nen BoB


hast du die dll in dem ordner in dem auch deine testprogramm.exe liegt?
zu 1.: hast du vllt vergessen ne statische libary einzubinden?
--
"Zwei Dinge sind unendlich: Das Universum und die menschliche Dummheit. Aber beim Universum bin ich mir nicht ganz sicher." - Albert Einstein
www.blue-xenon.de.vu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.02.2007, 11:24 Uhr
~yacci-chan-007
Gast


Hab die kurze Antwortzeit in diesem Forum übersehen. Bitte um Entschuldigung. Jetzt werde ich dabei bleiben und warten.
Die dll sind ganz normal über ActiveState installiert. Ich habe auf den Hinweis die dll(tcl84.dll,tk84.dll) Testweise mal kurz in den debug Ordner kopiert, aber da tut sich (natürlich) gar nichts.
Unter der kompilierung im Release modus erhalte ich folgenden Fehler:

Code:
------ Erstellen gestartet: Projekt: tclBeispiel, Konfiguration: Release Win32 ------
Kompilieren...
tclbsp2.cpp
c:\dokumente und einstellungen\yockel\eigene dateien\visual studio 2005\projects\tclbeispiel\tclbeispiel\tclbsp2.cpp(13) : warning C4700: Die nicht initialisierte lokale Variable "number" wurde verwendet.
Verknpfen...
tclbsp2.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__Tcl_DeleteInterp" in Funktion "_main".
tclbsp2.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__Tcl_Eval" in Funktion "_main".
tclbsp2.obj : error LNK2019: Verweis auf nicht aufgelötses externes Symbol "__imp__Tk_Init" in Funktion "_main".
tclbsp2.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__Tcl_Init" in Funktion "_main".
tclbsp2.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__Tcl_CreateInterp" in Funktion "_main".
C:\Dokumente und Einstellungen\Yockel\Eigene Dateien\Visual Studio 2005\Projects\tclBeispiel\Release\tclBeispiel.exe : fatal error LNK1120: 5 nicht aufgelößte externe Verweise.
Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\Yockel\Eigene Dateien\Visual Studio 2005\Projects\tclBeispiel\tclBeispiel\Release\BuildLog.htm" gespeichert.
tclBeispiel - 6 Fehler, 1 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 bersprungen ==========


Ich glaube nicht daß ich versucht habe eine staatische Bibliothek einzubinden. An den Einstellungen habe ich nicht viel geändert den Debugger(C7 kompatibel, Debug an ) aktiviert(Der geht jetzt).

Code:
tclBeispiel->Eigenschaften->c++->zusätzliche Includeverzeichnisse: tcl84.lib, tk84.lib ws2_32.lib

tclBeispiel->Eigenschaften->c++->Erweitert->Als C-Code kompilieren


Die tcl wird ohne Probleme im debug modus gefunden und ist wohl komplett benutzbar.
PS:
Hab in vielen anderen Sprachen schon viel programmiert aber noch nichts wirklich in C oder der visual-studio Umgebung. Die C Tutorial bringen mir nicht viel. Die MSDN-Online-Hilfe durch die manchmal alles und nichts sagenden Begriffe für mich etwas unübersichtlich. Ich kenne den Unterschied zwischen staatisch und dynamische Biblioteken, aber in Bezug zu C hab ich da noch keinen Schimmer. Vielleicht gibt es ein Skript oder eine Referenz speziell für solche Leute wie mich.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.02.2007, 12:51 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Du müßtest zu den Dlls noch ein Lib Datei haben, diese musst du dem Linker in den Projekteinstellungen mitgeben.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
22.02.2007, 14:12 Uhr
~yacci-chan-007
Gast


Hallo Guybrush,
danke für den Hinweis. Habe unter
[code]
Linker->zusätzliche abhängigkeiten:tcl84.lib, tk84.lib, ws2_32.lib
Linker->Zusätzliche Biblioteksverzeichnisse: "CProgram Files\Tcl\lib"
[\code]
sowohl unter debug wie release gesetzt. Damit laufen beide modi.
Mein eigentliches Problem habe ich allerdings noch nicht lösen können
Das Programm stürzt bei der Zeile Tk_Init(interp) nach ausführung des Breakpoints ab und meldet mit dem Requester

Unbehandelte Ausnahme bei 0x00000000 in tclBeispiel.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000000.

Danach kann ich mit unterbrechen in den debug modus wechseln von Visual Studio wechseln.
unter Module ist die Tk.dll als einzige Bibliothek mit einem Ausrufezeichen markiert.
Fahre ich mit der Maus auf das Icon teilt mir ein gelber Messagebalken mit, daß die Bibliotek sich nicht an der Standartadresse befindet. Mehr hinweise habe ich leider nicht. Damit ist das eigentliche Problem noch nicht gelöst.

Viele Grüße
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
22.02.2007, 14:17 Uhr
~yacci-chan-007
Gast


Mit der Tk.dll meinte ich die Tk84.dll
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: