Hallo folgendes Problem:
och code gerade an einen kleinen comporttool, welches schreiben und
lesen soll, multithreaded, aber ich bekomme beim compilieren errors
ich verwende codeblocks mit den min gw compiler unter windoof
nämlich
1
2
obj\Debug\main.o||In function `main':|
3
D:\__coding\avr\atmega1284p lcd test\PCapp\comtool\main.cpp|32|undefined reference to `_imp__pthread_create'|
4
D:\__coding\avr\atmega1284p lcd test\PCapp\comtool\main.cpp|38|undefined reference to `_imp__pthread_create'|
5
D:\__coding\avr\atmega1284p lcd test\PCapp\comtool\main.cpp|44|undefined reference to `_imp__pthread_join'|
6
D:\__coding\avr\atmega1284p lcd test\PCapp\comtool\main.cpp|45|undefined reference to `_imp__pthread_join'|
7
||=== Build finished: 4 errors, 0 warnings ===|
im mingw rootdir is pthread.h und libpthread.a drinnen...
hier der zugehörige code...
mangosaft schrieb:
...
> hier der zugehörige code...
...
> file: main.c> purpose: simple demo that receives characters from> the serial port and print them on the screen> author: -> email: futschaß1@gmx.at>
Do schau her a Österreicher! Treffender Name, Mr. Futschas ;-)
> pthread_join( p1, NULL );> pthread_join( p1, NULL );
Das ist gewollt? Was macht das ?
Meinst du nicht:
pthread_join( p1, NULL );
pthread_join( p2, NULL );
> }> static void *send_command_rs232(void *ch)> {> ch = ch;
was soll das? Initialisierung ? Oder für was ist das?
> char buffer;
was soll das?
char buffer;
wenn schon, fehlt dann wieder die abschliessende 0: *buffer = '\0';
> static void *read_rs232(void *ch)> {> int cport_nr = 5;> int bdrate=115200;> ch = ch;> unsigned char buf[4096];> int i;> int n;
int werte initialisieren..
> buf[n] = 0; /* always put a "null" at the end of a string! */
es heisst nicht, "put a 'null'" sondern "put a zero" ;-)
du meinst wohl, wieder, buf[n] = '\0';
>> for(i=0; i < n; i++)> {> if(buf[i] == 27) //if theres a ESC command -> close programm> {> break;> return 0;> buf[i] = '.';> }>> }>> printf("%s\n",(char *)buf);> }> Sleep(100);> }> return 0;> }
Hier noch ein Tipp, für dich, was wahrscheinlich die Lösung für dein
Problem ist: Suchen ist doch nicht schwer...Mann, mann..ihr müsst
selbständiger werden, sowohl auf der Uni als auch im Beruf ;)
"Move -lpthread to the end of that command:
g++ -ohello.exe hello.cc -lpthread
The order of the arguments is important. (Using -pthread throughout
instead of -lpthread for linking is actually recommended, since it sets
flags both for the preprocessor and the linker.)"
Dr. Tech schrieb:>> }>> static void *send_command_rs232(void *ch)>> {>> ch = ch;> was soll das? Initialisierung ? Oder für was ist das?
Vermutlich um eine Warnung wegen unbenutztem Parameter zu vermeiden.
>> char buffer;>> was soll das?> char buffer;
Was meinst du mit dieser Frage? Damit wird eine char-Variable namens
buffer angelegt.
> wenn schon, fehlt dann wieder die abschliessende 0: *buffer = '\0';
Bei einem char gibt es nichts abzuschließen. Du verwechselst es
offensichtlich mit einem Array aus char.
>> buf[n] = 0; /* always put a "null" at the end of a string! */> es heisst nicht, "put a 'null'" sondern "put a zero" ;-)> du meinst wohl, wieder, buf[n] = '\0';
0 und '\0' ist das gleiche.
>> int i;>> int n;>> int werte initialisieren..
Kann man machen und auch als sauberer ansehen, aber notwendig ist es
nicht.
Hallo,
Also Problem dank Dr.Tech gelöst! Lib verlinken und Sache hatte sich!
Zum Programm selbst, ja ich weiß es ist nicht schön, aber es
funktioniert!
Mfg
mangosaft schrieb:> Hallo,> Also Problem dank Dr.Tech gelöst! Lib verlinken und Sache hatte sich!> Zum Programm selbst, ja ich weiß es ist nicht schön, aber es> funktioniert!>> Mfg
Bitte, gerne, kein Problem, war doch nicht so schwer :-)
Weiss doch dass ich gut bin, bin jetzt schon in Feiertagsstimmung ;-)