En-tête correct, mais identifiant non trouvé

J’ai deux projets (x64).

Un . Écrit en C (wxWidgets) — edit: sa en C ++!

B. Écrit en C ++

A comstack bien, mais B (qui utilise les fonctions de A ) donne plusieurs erreurs lorsque j’essaie de comstackr.

Je suggère que la raison des erreurs est la même pour tous, alors je ne mentionne que le premier. Ça dit:

strlen: identifier not found 

Dans le fichier qui donne les messages d’erreur (wxcrtbase.h), les en-têtes suivants sont inclus:

 #include  #include ` 

Les fichiers de B incluent les en-têtes suivants de A :

 #include "wx/wx.h" #include "wx/dcbuffer.h" #include "wx/spinctrl.h" 

Donc, actuellement, je ne sais pas par où commencer pour rechercher la raison des erreurs. Peut-être que j’ai des fichiers C et C ++? Peut-être que j’ai compilé pour x64?

Merci pour l’aide!

edit: plus d’infos
Les lignes dans wxcrtbase.h autour de celle qui produit le premier message d’erreur sont les suivantes:

 #ifdef __cplusplus inline size_t wxStrlen(const char *s) { return s ? wxCRT_StrlenA(s) : 0; } inline size_t wxStrlen(const wchar_t *s) { return s ? wcslen(s) : 0; } 

L’ordre des inclus du wxcrtbase.h est

 #include  #include  #include  #include  #include  #include  

Le / showIncludes répertorie les éléments suivants (je m’arrête avec la liste après les deux premiers messages d’erreur):

 1>Compiling... 1>widget.cpp 1>Note: including file: m:\visual studio 2008\projects\general\rama\src\widget.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include \ssortingng 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\istream 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ostream 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ios 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\xlocnum 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\climits 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\yvals.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\crtdefs.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\sal.h 1>Note: including file: c:\program files (x86)\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\crtassem.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\vadefs.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\use_ansi.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\limits.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\crtdefs.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\cstdio 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\stdio.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\crtdefs.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\swprintf.inl 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\cstdlib 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\stdlib.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\crtdefs.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\streambuf 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\xiosbase 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\xlocale 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\cssortingng 1>Note: including file: M:\Visual Studio 2008\Projects\general\wxWidgets-2.9.0\include\wx\ssortingng.h 1>Note: including file: M:\Visual Studio 2008\Projects\general\wxWidgets-2.9.0\include\wx/defs.h 1>Note: including file: M:\Visual Studio 2008\Projects\general\wxWidgets-2.9.0\include\wx/platform.h 1>Note: including file: M:\Visual Studio 2008\Projects\general\wxWidgets-2.9.0\include\setupp.h 1>Note: including file: m:\visual studio 2008\projects\general\wxwidgets-2.9.0\include\wx/version.h 1>Note: including file: m:\visual studio 2008\projects\general\wxwidgets-2.9.0\include\wx/cpp.h 1>Note: including file: m:\visual studio 2008\projects\general\wxwidgets-2.9.0\include\wx/cpp.h 1>Note: including file: M:/Visual Studio 2008/Projects/general/wxWidgets-2.9.0/lib/vc_lib/mswud/wx/setup.h 1>Note: including file: M:\Visual Studio 2008\Projects\general\wxWidgets-2.9.0\include\wx/msw/libraries.h 1>Note: including file: M:\Visual Studio 2008\Projects\general\wxWidgets-2.9.0\include\wx/chkconf.h 1>Note: including file: M:\Visual Studio 2008\Projects\general\wxWidgets-2.9.0\include\wx/msw/chkconf.h 1>Note: including file: M:\Visual Studio 2008\Projects\general\wxWidgets-2.9.0\include\wx/version.h 1>Note: including file: M:\Visual Studio 2008\Projects\general\wxWidgets-2.9.0\include\wx/dlimpexp.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\stddef.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\crtdefs.h 1>Note: including file: M:\Visual Studio 2008\Projects\general\wxWidgets-2.9.0\include\wx/debug.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\assert.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\crtdefs.h 1>Note: including file: M:\Visual Studio 2008\Projects\general\wxWidgets-2.9.0\include\wx/chartype.h 1>Note: including file: M:\Visual Studio 2008\Projects\general\wxWidgets-2.9.0\include\wx/platform.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\tchar.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\crtdefs.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\wchar.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\crtdefs.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\wtime.inl 1>Note: including file: M:\Visual Studio 2008\Projects\general\wxWidgets-2.9.0\include\wx/cpp.h 1>Note: including file: M:\Visual Studio 2008\Projects\general\wxWidgets-2.9.0\include\wx/windowid.h 1>Note: including file: M:\Visual Studio 2008\Projects\general\wxWidgets-2.9.0\include\wx/msw/winundef.h 1>Note: including file: M:\Visual Studio 2008\Projects\general\wxWidgets-2.9.0\include\wx/features.h 1>Note: including file: M:\Visual Studio 2008\Projects\general\wxWidgets-2.9.0\include\wx\ssortingng.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\stdarg.h 1>Note: including file: M:\Visual Studio 2008\Projects\general\wxWidgets-2.9.0\include\wx/wxcrtbase.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\io.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\crtdefs.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\cctype 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ctype.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\crtdefs.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\cwctype 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\wctype.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\crtdefs.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ctime 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\time.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\crtdefs.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\time.inl 1>Note: including file: M:\Visual Studio 2008\Projects\general\wxWidgets-2.9.0\include\wx/chartype.h 1>M:\Visual Studio 2008\Projects\general\wxWidgets-2.9.0\include\wx/wxcrtbase.h(705) : error C3861: 'strlen': identifier not found 1>M:\Visual Studio 2008\Projects\general\wxWidgets-2.9.0\include\wx/wxcrtbase.h(718) : error C3861: '_strdup': identifier not found 

Quelques choses à essayer et / ou répondre:

  • Pouvez-vous poster au moins les quelques lignes entourant celle pour laquelle le compilateur génère l’erreur ‘identifier non trouvé’?
  • Lorsque vous dites que vous avez une ligne #include , quel (s) fichier (s) précède-t-il et précède-t-il les différents wx inclus de wx ?
  • Pouvez-vous publier le résultat des en-têtes inclus lorsque vous construisez avec l’option /showIncludes (dans la page de propriétés du projet C ++ de l’EDI de l’IDE 2008 sous “C / C ++ / Advanced / Show Includes”)?

Modifier, avec de nouvelles informations:

Selon les modifications que vous avez effectuées et qui incluent une liste plus complète à partir de /showIncludes , il semble que le chemin d’ /showIncludes INCLUDE soit mal défini. Voici quelques lignes du journal:

 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\cssortingng 1>Note: including file: M:\Visual Studio 2008\Projects\general\wxWidgets-2.9.0\include\wx\ssortingng.h 

Lorsque l’en-tête cssortingng de MSVC tente d’inclure ssortingng.h , il sélectionne un en ssortingng.h tête ssortingng.h dans la bibliothèque wx au lieu de celui faisant partie de la dissortingbution du compilateur (qui se trouverait dans C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ssortingng.h ).

Je ne sais pas pourquoi la bibliothèque wx nommerait l’un de ses propres en-têtes, ssortingng.h (au lieu, par exemple, wxSsortingng.h ), mais je suppose qu’il est destiné à être récupéré par quelqu’un utilisant quelque chose comme:

 #include "wx/ssortingng.h" 

Quoi qu’il en soit, je pense que vous allez résoudre votre problème en vous assurant que le répertoire d’inclusion MSVC se trouve dans le chemin de recherche INCLUDE avant tout autre répertoire.

Si wxWidgets est en C ++ et qu’il inclut et que votre compilateur empêche l’inclusion de et lorsque cssortingng / cstdio sont inclus, alors strlen serait dans l’espace de noms std au lieu de global. Essayez std :: strlen et voyez si cela corrige l’erreur.

Essayez #include et #include , qui sont les en-têtes pour C ++.

Essayer:

 #include  #include  #include  #include  #include  #include  using namespace std; #include "wxcrtbase.h" #include "wx/chartype.h" int main(void) { return strlen("hey there good buddy!"); } 

C’est ce que je déteste le plus à propos de c ++.

Le champ de commentaire est trop petit. Je réponds à Michael Burr:

UNE.

 #ifdef __cplusplus inline size_t wxStrlen(const char *s) { return s ? wxCRT_StrlenA(s) : 0; } inline size_t wxStrlen(const wchar_t *s) { return s ? wcslen(s) : 0; }` 

B. le ssortingng.h est seulement dans les fichiers wxWidgets.

La commande d’origine est:

 #include  #include  #include  #include  #include  #include  

C. Voici les quelques lignes avant et une ligne après le premier message d’erreur:

 1>Note: including file: M:\Visual Studio 2008\Projects\general\wxWidgets-2.9.0\include\wx/chartype.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\ctype.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\crtdefs.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\wctype.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\crtdefs.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\time.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\crtdefs.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\time.inl 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\io.h 1>Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\crtdefs.h 1>M:\Visual Studio 2008\Projects\general\wxWidgets-2.9.0\include\wx/wxcrtbase.h(696) : error C3861: 'strlen': identifier not found 1>M:\Visual Studio 2008\Projects\general\wxWidgets-2.9.0\include\wx/wxcrtbase.h(709) : error C3861: '_strdup': identifier not found 

J’ai eu le même problème. La solution pour moi avait à voir avec la commande include. L’inclusion de ssortingng.h avant stdafx.h origine de l’erreur. L’inverse fonctionne. Il semble que le compilateur ignorait complètement ssortingng.h .

Je pense en effet que vous devez inclure cstdio et cssortingng (comme proposé ci-dessus), mais dans ce cas, tout résidera dans le namespace std, comme std :: strlen et autres …