2009-04-07 1 views
0

J'ai téléchargé zthreads (trouvés ici: http://zthread.sourceforge.net/) et ont essayé de compiler mais je reçois cette erreur de make:compilant zthreads

MutexImpl.h:156: error: there are no arguments to 'ownerAcquired' that depend on a  template parameter, so a declaration of 'ownerAcquired' must be available 

MutexImpl.h: 156: Erreur: (si vous utilisez '-fpermissive', G ++ acceptera votre code, mais permettant l'utilisation d'un nom non déclaré est désapprouvée)

puis après pour toutes les fonctions dans ce fichier source que je reçois ce genre d'erreur:

MutexImpl.h:167: error: there are no arguments to 'function' that depend on a template parameter, so a declaration of 'function' must be available 

Donc je suppose que c'est une erreur de makefile mais je ne suis pas sûr de dire à make pour dire à g ++ de compiler les fichiers avec -fpermissive. Est-ce que quelqu'un sait comment mettre cela dans le makefile (si tel est le problème)?

Répondre

3

CXXFLAGS + = -fpermissive

+0

je reçois la même erreur de g ++ avec cela. En fait, avec cette ligne, je ne vois même pas -fpermissive quand make affiche les opts que g ++ utilise. –

+0

Vérifié avec notre système de construction fortement personnalisé. CXXFLAGS = -fpermissive $ (CCFLAGS) $ (include_path) -D_PERF_TEST_ a abouti g ++ -m64 -fpermissive -ggdb -Wall -Wshadow -Wpointer-arith -Wcast-Qual -m64 -D SUNOS -D INTEL -D _M64BIT_ - D _REENTRANT ... CXXFLAGS + = -fermeture a également travaillé – Gayan

2

convention standard gmake est d'utiliser la variable CXXFLAGS pour passer des options au compilateur C++. Vous pouvez profiter de ce fait ainsi que d'une fonctionnalité appelée « ligne de commande remplace » pour obtenir votre drapeau supplémentaire clouée sur les drapeaux passés à g ++ en invoquant gmake cette façon:

make CXXFLAGS+=-fpermissive 

Je téléchargé moi-même la source vérifiez que cela fonctionne et constatez que cela fonctionne, bien qu'il y ait encore un tas d'autres avertissements émis. Vous pouvez enregistrer un bogue pour ces problèmes si vous avez l'intention de continuer à utiliser la bibliothèque.

Hope this helps,

Eric Melski

1

Je me suis débarrassé de toutes ces erreurs en changeant le code: pour chaque ligne avec cette erreur, ajoutez this-> à la fonction qui provoque l'erreur. Dans la ligne que vous cite:

ownerAcquired doit être changé par this-> ownerAcquired

J'espère que cette aide