Werte in Globalevariablen schreiben
-
Hallo
ich möchte gerne etwas in Globalevraiablen schreiben, damit ich die Werte auch in anderen C Programmen zur verfügung habe.
Ich habe es hiermit schon versucht:
cpstr (host, argv[1]);
cpstr ( port_n, argv[2]);
cpstr ( type, argv[3]);Bekomme beim Compilern dann folgenden Fehler:
gcc -O2 -s -o proxychains main.o
main.o(.text+0x28): In functionmain': : undefined reference to
cpstr'
main.o(.text+0x3c): In functionmain': : undefined reference to
cpstr'
main.o(.text+0x4f): In functionmain': : undefined reference to
cpstr'
collect2: ld returned 1 exit status
make[3]: *** [proxychains] Error 1
make[3]: Leaving directory/test/proxychains' make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory
/test/proxychains'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/test'
make: *** [all-recursive-am] Error 2Kann mir wer weiterhelfen?
Danke
-
a) Du bist Dir sicher, daß Du bei C# richtig bist?
b) Du bist Dir sicher, daß cpstr im Programm verfügbar ist?
-
1. Weis nicht könnte vieleicht auch in Ansi C rein.
2. Wieso sollte cpstr nicht verfügbar sein?Das Programm ist für Linux. Ich programmiere es auch nicht neu sondern ich programmiere es einwenig um.
-
1. Wenn die Sprache C# wäre, wüsstest Du es...
2. Gegenfrage: Wieso sollte es verfügbar sein, eine Standardfunktion ist cpstr jedenfalls nicht?
-
Wenn sie denn nicht verfügbar ist.
Wie mache ich sie verfügbar oder gibts auch ne andere Möglichkeit in globale Variablen zu schreiben.
-
Du kannst in globale Variablen genauso schreiben wie in lokale.
Um die verfügbar zu machen musst Du wissen wo sie herkommt und das dann mit in Dein Projekt nehmen, und um sie zu nutzen weisst Du am besten auch noch was sie genau tut.
-
Hmm und wie mache ich das?
Haste vieleicht nen Beispiel?
-
Weissbierwaldi schrieb:
Hmm und wie mache ich das?
Haste vieleicht nen Beispiel?Wenn es Ansi C ist schreibt man in eine globale Variable wie in eine Lokale....
// globale Variable: int glo_variable=0; int main() { glo_variable = 1; return 0; }
Wenn ich dich falsch verstanden habe liegt es wahrscheinlich an deiner Fragestellung
lyrix
-
Ich glaube er meint Umgebungsvariablen.
-
Also ich habe ein Programm namens proxychains.
In der Datei main.c wird der Startbefehl aufgeteilt.
Dann werden die Umgebungsvariablen per LD_PRELOAD(/.../../proxychains.so) geladen.
In dieser Datei werden die Proxies aus einer Config ausgelesen.
Ich wollte das so umprogrammieren, dass ich die Proxies direkt im Startbefehl angeben kann.
Da er in der Datei main.c auseinander genommen wird muss ich ihn irgendwie in die proxychains.so reinbringen.
Damit ich dort die Daten der Proxy habe.
-
Also ich glaube am besten ist Du zeigst uns mal das Programm proxychains, denn Deine Beschreibung ist ziemlich wirr... (z.B. "werden die Umgebungsvariablen per LD_PRELOAD" sicher nicht geladen, vielmehr ist LD_PRELOAD eine Umgebungsvariable. Wird was reingeschrieben? Was wird dann gestartet?)
-
Ok
Also das hier ist die main.c
#ifdef HAVE_CONFIG_H #include <config.h> #endif #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <memory.h> #include <errno.h> #include <sys/types.h> #include <sys/wait.h> int main(int argc, char *argv[]) { printf(Ip); if(argc<2) { printf("\nUsage: proxychains program_name [arguments]\n" "\t for example : proxychains telnet somehost.com\n" "More help in README file\n"); return 0 ; } cpstr (Ip, argv[1]); cpstr (Port, argv[2]); cpstr (Art, argv[3]); putenv("LD_PRELOAD=/usr/lib/libproxychains.so"); execvp(argv[4],&argv[4]); perror("proxychains can't load process...."); return EXIT_SUCCESS; }
-
Apollon schrieb:
Ich glaube er meint Umgebungsvariablen.
Naja aber globale Variablen sind nunmal das was ich in meinem Beispiel geschrieben habe. Sollten Umgebungsvariablen auch global genannt werden, bitte ich meine Unwissenheit zu entschuldigen
-
Zumindest heist das bei Php so.
Da kann man globale Variablen aktivieren in der ini.Aber wo ist denn das Problem bei meinem Programm?
Das mit dem cpstr hat mir ein bekannter gesagt der Programmierer ist.
-
Dann frag doch einfach den, der Dir diesen tollen Tipp gegeben hat. Außerdem bist Du immer noch im falschen Forum...
Bekomme beim Compilern dann folgenden Fehler: gcc -O2 -s -o proxychains main.o main.o(.text+0x28): In function `main': : undefined reference to `cpstr' <---- = cpstr ist nicht bekannt main.o(.text+0x3c): In function `main': : undefined reference to `cpstr' <---- = cpstr ist nicht bekannt main.o(.text+0x4f): In function `main': : undefined reference to `cpstr' <---- = cpstr ist nicht bekannt collect2: ld returned 1 exit status
Ich kenne cpstr nicht und programmiere nicht mehr in C. Offenbar ist das ne Funktion, die in eine Variable den Inhalt eines bestimmten Aufrufparameters (argv) reinkopiert. Du mußt in Deinen Include-Dateien nachkucken, wo diese Funktion deklariert ist und diese Datei dann per Include einbinden. Oder es ist eine Funktion aus einer Sourcedatei, die Du dem Compiler nicht mit angegeben hast...
-
Wie gesagt habe ich das von einem Bekannten.
Gibts irgendwo ne Webseite wo man nach schauen kann was man für welche Funktionen inluden muss?Danke
-
Du brauchst an sich keine Website. Entweder, die Funktion steht irgendwo in einer Deiner Include-Dateien drin oder - wie ich vermute - es ist ne Datei, die Du mit dem Programm vorliegen hast. Oder Du rufst den Compiler falsch auf (fehlende Sourcedateien).
Wenn Du ein Desktop-Suchprogramm hast, kannst Du ja mal nach cpstr suchen lassen und findest so die richtige Include-Datei...?Lieber Mod: bitte verschieb doch den Thread in's C-Forum, vielleicht kann da einer weiterhelfen.
-
Dieser Thread wurde von Moderator/in AndreasW aus dem Forum C# und .NET in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Problem ist ja dass in diesem Programm kein cpstr vor kam.
Dazu hat mir ein bekannter geraten.
Ich müsste mir also irgenwo eine Includedatei herholen wo cpstr drin ist.
-
schluss jetzt, du benutzt ab sofort "strcpy". cpstr gibts nicht, sag das deinem bekannten.
-
c.rackwitz ist ein Diktator.