L'en-tête correcte, mais identificateur introuvable
J'ai deux projets (x64).
Un. Écrit en C (wxWidgets) --- edit: sa en C++!
B. Écrit en C++
Un compile bien, mais B (qui utilise des fonctions de Un) donne plusieurs erreurs lorsque j'essaie de compiler.
Je suggère que la raison de ces erreurs est la même pour tous, pour que je le mentionne seulement le premier.
Il dit:
strlen: identifier not found
Dans le fichier qui donne les messages d'erreur ( wxcrtbase.h ), les en-têtes suivants sont inclus:
#include <stdio.h>
#include <string.h>`
Les fichiers à partir de B inclure les en-têtes suivants de Un:
#include "wx/wx.h"
#include "wx/dcbuffer.h"
#include "wx/spinctrl.h"
Donc, actuellement, je n'ai aucune idée de par où commencer à chercher la raison de l'erreur. Peut-être que j'ai le C et le C++ fichiers? Peut-être que j'ai compilé pour x64?
Merci pour l'aide!
edit: plus d'infos
les lignes en wxcrtbase.h autour de l'élaboration du premier message d'erreur:
#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 de la comprend de la wxcrtbase.h est
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <wctype.h>
#include <time.h>
#include <io.h>
L' /showIncludes listes suivantes ( j'arrête 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 \string
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\cstring
1>Note: including file: M:\Visual Studio 2008\Projects\general\wxWidgets-2.9.0\include\wx\string.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\string.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
Je suis désolé, je ne peux pas le poster. Aussi, c'est juste que plusieurs milliers de lignes de code. B a comprend comme: #include "wx/wx.h" #include "wx/app.h" #include "wx/cadre.h" ( A. wxWidgets et B. c'est le code qui utilise wxWidgets ) edit: je vois wxWidgets est aussi en c++, mais de certains fichiers .c terminaisons...
edit2: encore plus étrange: le message d'erreur vient de wxcrtbase.h. Cet en-tête n'est pas appelée directement par B. mais, évidemment, à partir d'un autre wxWidgets fichier.
Avez-vous remarqué que chaîne de caractères.h n'est pas inclus? La seule chaîne.h est inclus selon votre journal est ...\general\wxWidgets-2.9.0\include\wx/rpc.h
Se pourrait-il que vous avez copier collé certains fichier d'en-tête, j'ai oublié de corriger les gardes et le fichier ne fait pas incluses? (Je veux dire qu'il est inclus, mais le contenu est ignoré), Essayez de mettre un
#warning something
juste après #include <string.h>
et de voir si l'avertissement s'affiche lors de la compilation. Si non, il ya quelque chose de mal avec notamment wxcrtbase.h
OriginalL'auteur sciloop | 2010-03-26
Vous devez vous connecter pour publier un commentaire.
Quelques choses à essayer et/ou de réponse:
#include <string.h>
ligne, exactement qui fichier(s) et il le fait précéder les différentswx
comprend?/showIncludes
option (c'est dans le VS 2008 IDE C++ page de propriétés du projet sous "C/C++/Avancé/Spectacle Comprend")?Modifier, avec de nouvelles informations:
Basée sur la modification que vous avez fait ce inclus une liste complète de
/showIncludes
, il semble que vous pourriez avoir le chemin de définir de manière incorrecte. Ici sont un couple de lignes à partir du journal:Quand MSVC de cstring en-tête est d'essayer d'inclure
string.h
, c'est de ramasser unstring.h
en-tête de lawx
de la bibliothèque à la place de celui qui fait partie de l'compilateur de distribution (ce qui seraitC:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\string.h
).Je ne suis pas sûr pourquoi, la
wx
de la bibliothèque nom de l'un des leurs en-têtesstring.h
(au lieu de, disons,wxString.h
), mais je suppose qu'il est destiné à être ramassé par quelqu'un d'utiliser quelque chose comme:Soit, je pense que vous allez résoudre votre problème en faisant en sorte que le MSVC répertoire include est dans l'include chemin de recherche avant tout autre répertoire.
Michael, merci beaucoup pour l'aide que. Avec le MSVC répertoire en premier lieu, il fonctionne maintenant!
OriginalL'auteur Michael Burr
Si wxWidgets est le C++, et il comprend des et et votre compilateur empêche l'introduction de la et quand cstring/cstdio sont inclus, puis strlen serait dans l'espace de noms std à la place de mondial. Essayez std::strlen et voir si cela corrige l'erreur.
#inclure des en-têtes systèmes (<>) devrait presque toujours venir avant #include locale des en-têtes ("")
Mettre le système en-têtes à l'avant ne change pas les messages d'erreur.
OriginalL'auteur Mark B
Essayer
#include<cstdio>
et#include<cstring>
, qui sont les en-têtes de C++remplacement stdio.h et de chaîne.h par cstdio et cstring ne résout rien.
OriginalL'auteur gc .
Essayer:
C'est le truc que je déteste au sujet de c++ le plus.
Quand je compile TON code avec la dpi remplacé par io.h, je reçois la même erreur à nouveau des messages
Mais, au moins, il est bon de voir que le problème existe même sans mon propre projet B. Donc, ça doit être un problème à l'intérieur de wxWidgets?!
Tout ce que je tentais de démontrer a un autre ordre de la comprend et l'espace de noms d'utilisation. <cio> devrait signifier "namespace std { #include <io.h> }".
OriginalL'auteur nategoose
Le champ commentaire est trop petit.
Je réponds à Michael Bavure:
A.
B. la chaîne.h est seulement dans le wxWidgets fichiers.
Il y a la commande d'origine est:
C.
Voici les quelques lignes avant et une ligne après le premier message d'erreur:
/showIncludes
de sortie pour un .c/.cpp fichier - au moins jusqu'à l'error C3861 lignes. Ce que vous avez montré, n'indique pas questring.h
a été inclus, mais c'est probablement parce qu'il était avant où vous avez décidé de commencer le copier/coller.ok, je vais le faire.
J'ai modifié ma réponse basée sur les informations que vous avez ajouté à votre question.
OriginalL'auteur sciloop
J'ai eu ce même problème. Le correctif pour moi avait à faire avec le comprennent de l'ordre. Y compris
string.h
avantstdafx.h
l'origine de l'erreur. L'autre manière autour des œuvres. Il semble que le compilateur a été ignorantstring.h
complètement.OriginalL'auteur JamLan
Je pense en effet que vous devez inclure cstdio et cstring (comme proposé ci-dessus), mais dans ce cas tout va résider dans l'espace de noms std, comme std::strlen et comme...
OriginalL'auteur Randall Flagg