c++ boost::thread, påverkas av annan kod? Hjälp en boostn00b

Här diskuteras programmering och utveckling
Användarvisningsbild
cthulhu
Inlägg: 789
Blev medlem: 05 jan 2009, 14:11
OS: Debian

c++ boost::thread, påverkas av annan kod? Hjälp en boostn00b

Inlägg av cthulhu »

EDIT: Se min nästa post, längre ner, för vad jag tror kan vara en bättre "isolering" av problemet.

Ursäkta den luddiga rubruken, men jag har just upptäckt multithreading-möjligheterna i boost-paketet, men när jag försöker implementera det i mitt projekt, (ca 4800 rader kod), så skiter det sig. Jag har en god ide om hur jag skall implementer det i mitt program, och det kommer minska körtiden på mitt program från 1-2 veckor till ett par dagar, (på 8 CPU:er) så jag måste få detta till att funka!

Så jag testar att kompilera en "hello world, I'm a thread" fil på ett par rader, och det funkar. Sedan testar jag att lägga in exakt dessa rader i min egen main-fil (där jag har en massa annan kod, men inget som har med boost, eller threads att göra), och då funkar det inte, (felmeddelandet är ett par sidor långt).

Så då testade jag att börja tabort all min egna kod, och objekt i mitt projekt, och ha kvar "hello world", och detta funkar, men när jag lägger in kod som inte har något att göra med boost, eller threads efter min trådade "hello world" funktion så går allt på röven. För att exemplifiera:

Detta funkar, med g++ helloworld.cpp -lboost_thread

Kod: Markera allt

#include <iostream>                                                                   
#include <boost/thread/thread.hpp>                                                                          
                                                                                                            
void hello(){                                                                                               
  std::cout <<                                                                                              
    "Hello world, I'm a thread!" << std::endl;                                                              
}                                                                                                           
                                                                                                            
int main(int argc, char* argv[]){                                                                           
                                                                                                            
  boost::thread thrd(&hello);                                                                               
  thrd.join();                                                                                              
                                                                                                            
  //STOPPAR JAG IN KOD HÄR (SOM INTE HAR NÅGOT MED THREADS ATT GÖRA!)                                       
  //OCH LÄGGER TILL FLER FILER TILL PROJEKTET, MED OBJEKT OCH KLASSER                                       
  //SOM JAG BEHÖVER, OCH LITE '#includes "fil.h" ' SÅ SKRIKER                                               
  //BOOST::THREADS PÅ MIG!                                                                                  
                                                                                                            
  return 0;                                                                                                 
}                                                                                                           
  
Jag har även testat att lägga till en enstaka klass, och göra så att projektet består av flera filer och det fungerade också, så jag vet att min Makefile är ok, och att jag gör rätt när jag länkar main-filen mot de övriga, men med fulla koden skiter det sig.

Vad kan vara fel?? Snälla bullen hjälp mig....
Senast redigerad av 1 cthulhu, redigerad totalt 5 gånger.
Användarvisningsbild
cthulhu
Inlägg: 789
Blev medlem: 05 jan 2009, 14:11
OS: Debian

Re: c++ boost::thread, påverkas av annan kod? Hjälp en boost

Inlägg av cthulhu »

Testat och grubblat ännu mer nu. Och kommit fram till att bara själva inkluderandet av boost-threads-headern i mitt gamla originalprogram gör att den inte kompilerar!

har jag denna raden i min kod slutar den kompilera:

Kod: Markera allt

#include <boost/thread/thread.hpp>   
Kan inkluderandet av en header man inte använder korrumpera ett program?
Skriv svar

Återgå till "Programmering och webbdesign"