2010-03-11 5 views
1

j'ai eu un nouveau livre de programmation (programmation multicore par cameron hughes, tracey hughes). jusqu'ici je n'ai pas un de leurs programmes pour travailler leur livre dit que cela devrait fonctionner sur 99% des ordinateurs si im un peu confus mais à la fin de chaque programme dans leur livre ils ont "compiler et lier des instructions" .. dois-je entrer ça? il ressemble à quelque chose comme ça "C++ -o guess_it guess_it.cc". le code im runnning droit est maintenant:ne peut pas obtenir mon code à exécuter à partir d'un livre de programmation (C++)

#include <iostream> 
#include <windows.h> 
#include <string> 
#include <spawn.h> 
#include <sys/wait.h> 

using namespace std; 

int main(int argc,char *argv[],char *envp[]) 
{ 

pid_t ChildProcess; 
pid_t ChildProcess2; 
int RetCode1; 
int RetCode2; 
int Value; 
RetCode1 = posix_spawn(&ChildProcess,"find_code",NULL, 
         NULL,argv,envp); 
RetCode2 = posix_spawn(&ChildProcess2,"find_code",NULL, 
         NULL,argv,envp); 
wait(&Value); 
wait(&Value); 
return(0); 
} 

im fonctionnant sous Windows 7 (32 bits), AMD athion x2 7550 proessor dual-core, 2008 Edition Express VC. j'obtiens l'erreur suivante: erreur fatale C1083: Impossible d'ouvrir le fichier include: 'spawn.h': aucun fichier ou répertoire

quelqu'un sait pourquoi je ne peux pas faire fonctionner mon code? Ai-je besoin de télécharger quelque chose? parce que j'ai lu le livre et je n'ai rien vu de télécharger quoi que ce soit mais je me suis peut-être trompé. :(

+0

J'ai téléchargé l'exemple de code pour le livre et j'ai regardé la liste 4-1, et il n'a pas inclus "windows.h". (Donc vous avez ajouté ça!) Ce livre cible assez clairement les programmeurs POSIX, pourquoi ne pas utiliser VirtualBox et installer quelque chose comme Ubuntu pour avoir la vraie expérience? – HostileFork

Répondre

3

Il ressemble à ce livre utilise le filetage POSIX. Visual Studio utilise Windows Threading par défaut, ce qui a une API complètement différente.

juste Vous avez probablement besoin d'obtenir une copie d'un POSIX Thread library for Windows. Cette volonté inclure spawn.h et les fichiers lib appropriés pour vous d'utiliser.

+0

xD k ty je vais l'essayer et voir comment ça va – blood

+0

euhh je ne peux pas trouver comment télécharger O_o puis-je avoir un peu d'aide? ce lien est bien mais les liens de téléchargement me prennent juste à une grande chose des dossiers et je ne sais pas quoi télécharger ou comment. – blood

+0

merci, ça explique beaucoup. mais je ne peux pas le faire fonctionner encore donc je vais voir ce que je peux trouver avec google à ce sujet de toute façon ty encore ^^ – blood

1

Pardonnez-moi si je suis mal interpréter votre niveau d'expérience, mais il semble que si vous êtes un débutant avec cette langue.

La compilation exemple et lier l'instruction dans le livre

C++ -o guess_it guess_it.cc 

est un exemple d'appel d'un compilateur et d'un éditeur de liens à partir de la ligne de commande. Si vous utilisez Visaul C++, l'EDI automatisera la compilation et le processus de liaison lorsque vous cliquerez sur le bouton "build", vous n'avez donc pas besoin de vous inquiéter de le faire depuis la ligne de commande.

Sur l'erreur que vous voyez dans VC++:

Le compilateur vous dit qu'il ne peut pas trouver le fichier d'en-tête spawn.h, que vous avez dit que ce que votre programme a besoin dans la ligne

#include <spawn.h> 

Comme autre sur cette page ont mentionné, spawn.h est un fichier fourni par les bibliothèques standard POSIX et contient des fonctionnalités pour les nouveaux processus de frai.

Respectueusement, cela me semble provenir de la façon dont vous avez posé votre question («compiler et lier les instructions») comme si vous ne compreniez pas vraiment ce que vous faites. Avant de vous lancer dans le multi-threading en C++, je recommande de prendre du recul et de trouver un livre de débutant sur C++ en utilisant Visual Studio, et de recommencer depuis le début. Je crains que vous fassiez très peu de progrès à moins de prendre le temps d'apprendre les principes fondamentaux, et l'utilisation du compilateur est à peu près aussi fondamentale que possible!

Bonne chance!

+0

: | Je ne suis pas nouveau en C++, je n'ai jamais essayé de relier quoi que ce soit .. – blood

+0

Encore une fois, avec tout le respect que je vous dois, je ne suis pas sûr que ces deux commentaires puissent être vrais. Vous connaissez la syntaxe, mais n'avez jamais créé de programme à partir de plusieurs fichiers objets? – razlebe

+0

Les IDEs C++ modernes (en particulier Microsoft avec tous les "Wizards") peuvent vous permettre d'écrire beaucoup de code ... GUI, jouer de la musique, etc. ... et ne jamais avoir à manipuler les paramètres du linker pour attirer un tiers bibliothèque. Ils peuvent même envelopper les messages d'erreur dans des listes de tâches, de sorte qu'un débutant ne soit pas conscient de savoir si une erreur est venue du "compilateur" ou du "lieur". – HostileFork

Questions connexes