c++ 'CA2W': Bezeichner wurde nicht gefunden
warum bekomme ich 'CA2W': Bezeichner wurde nicht gefunden
for(DWORD i = 0; i < numMaterials; i++) //for each material...
{
material[i] = tempMaterials[i].MatD3D; //get the material info
material[i].Ambient = material[i].Diffuse; //make ambient the same as diffuse
USES_CONVERSION; //allows certain string conversions
//if there is a texture to load, load it
D3DXCreateTextureFromFile(d3ddev,
CA2W(tempMaterials[i].pTextureFilename),
&texture[i]);
texture[i] = NULL; //if there is no texture, set the texture to NULL
}
warum willst du es schließen?
Wie ich sagte, ein wenig vor, die Sie wirklich brauchen, um zu starten und lernen nur C++. Lernen wirklich gut, solide, sauber, basic, C++, dann nach oben bewegen, dann versuchen Sie game programming. Spiel Programmieren ist nicht trivial, und man kann nicht wirklich überall zu bekommen, wenn Sie versuchen zu lernen, die idiomatischen C++ zur gleichen Zeit. Wirklich, ich glaube, wir würden alle gerne sehen wie du besser werden, aber wir können wirklich nicht viel mehr tun. Irgendwann müssen Sie es auf sich nehmen, die Zeit nehmen, um wirklich lernen die Grundlagen.
Wie ich sagte, ein wenig vor, die Sie wirklich brauchen, um zu starten und lernen nur C++. Lernen wirklich gut, solide, sauber, basic, C++, dann nach oben bewegen, dann versuchen Sie game programming. Spiel Programmieren ist nicht trivial, und man kann nicht wirklich überall zu bekommen, wenn Sie versuchen zu lernen, die idiomatischen C++ zur gleichen Zeit. Wirklich, ich glaube, wir würden alle gerne sehen wie du besser werden, aber wir können wirklich nicht viel mehr tun. Irgendwann müssen Sie es auf sich nehmen, die Zeit nehmen, um wirklich lernen die Grundlagen.
InformationsquelleAutor Ramilol | 2010-10-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Edit:
Der OP hat mir gerade gesagt, dass Visual Studio 2010 Express verwendet wurde, um den code zu kompilieren. Das würde erklären, warum
CA2W
konnte nicht gefunden werden, weil die Express-Editionen nicht enthalten ist die gesamte ATL/MFC-Bibliothek. Daher meine ursprüngliche Antwort ist irrelevant für die OP.Die moral von der Geschichte: stellen Sie sicher, zu erwähnen, genau das, was Umgebung, die Sie sind, wenn Fragen dieser Art von Fragen.
Anstatt
CA2W
, die Sie verwenden können,MultiByteToWideChar()
- diese Funktion ist das, was tatsächlich genutzt wird, durchCA2W
zu konvertieren Sie die Zeichenfolge, so erhalten Sie im Grunde das gleiche Ergebnis.Hier ist ein Beispiel zur Verwendung von
MultiByteToWideChar()
in einer Antwort auf einen anderen Stack overflow Frage. Es ist für eine Konvertierung vonstd::string
zuLPCWSTR
, aber es ist im Grunde der gleiche Vorgang.Original Antwort:
Nach die Dokumentation für ATL-und MFC-Zeichenfolge Konvertierung Makros Sie muss enthalten:
Ich denke, der Grund, warum dieser code nicht funktioniert hat, vor, war, weil Sie
#define
'd_ATL_NO_AUTOMATIC_NAMESPACE
irgendwo vor#include <atlbase.h>
.Toma: Im Ernst? Hast du den gleichen Fehler? Welche genaue Fehlermeldung hast du bekommen? Der code-Ausschnitt stellt so gut auf meinem Rechner.
Toma: Wirklich? Ich nahm sich die Zeit zu starten, ein dummy-Projekt in Visual Studio, Forschung, Dokumentation, erstellen, was sollte eine kompilierbare code-snippet, trotz der Tatsache es gibt null Anreiz für mich, um zu versuchen, um Ihnen zu helfen, und alles, was Sie zu sagen haben, ist, dass ich denke ich wäre Verschwendung Ihr Zeit? Alles was ich wollte, war für einige Informationen über Ihren code/Umwelt, weil das code-snippet habe ich oben für mich funktioniert, also offensichtlich etwas, was anders ist, was ich habe und was Sie haben. Haben Sie versucht, die Zusammenstellung der oben genannten code-snippet ein, indem Sie sich selbst?
Toma: finden Sie Beispiele für eine Nutzung von
MultiByteToWideChar()
hier auf Stack-überlauf, sowie auf anderen Websites. Wenn Sie Probleme mit der Verwendung der Funktion, die ich sehr empfehlen anderen Frage, damit ich nicht Durcheinander meine Antwort mehr als es ist.Toma: Hier ist ein Beispiel
MultiByteToWideChar()
auf Stack overflow: stackoverflow.com/questions/27220/...InformationsquelleAutor In silico
Zeig uns deinen code, sonst sind wir machtlos, Ihnen zu helfen.
Den Fehler, Sie werden immer bedeutet: "Was zum Teufel ist CA2W???"
Bedeutet das, Sie sind mit dem Bezeichner CA2W, aber es wurde nicht erklärt wie alles.
Der obige code ändert nichts an der Antwort. Der compiler weiß einfach nicht, was CA2W ist.
ok, aber wie soll ich wissen, wo ca2w gefunden werden kann
Toma: Wenn Sie nicht wissen, was
CA2W
ist, warum verwendest du es in den code? Dies ist nicht anders aus, wenn Sie eingegeben haben, einige Kauderwelsch-code, wiejcgdhfgdh
, und begann dann, sich zu Fragen, warum der compiler nicht weiß, was es ist.Toma: Also im Grunde kopiert und eingefügt code, ohne sich die Mühe zu verstehen, was es tut?
InformationsquelleAutor Alexander Rafferty
Also versuchen Sie diese - Erstellen Sie eine Win32-Konsolen-Projekt, ersetzen Sie dann den angegebenen code aus, mit unten, die kompiliert bei mir gut. Wenn dies nicht kompilieren für Sie, da bin ich überfragt - vielleicht re-installieren Sie Visual Studio? Scheint, wie mehrere Personen zusammenstellen kann dies richtig, so was könnte falsch sein mit Ihrer Visual Studio-installation?
InformationsquelleAutor Jeff
CA2W
in<atlconv.h>
.Toma: Pflege, um uns zu sagen, wie es nicht funktioniert hätte? Hast du einen compiler Fehler? Was war der Fehler(s), wenn überhaupt?
Fehler 5 error C3861: 'CA2W': Bezeichner wurde nicht gefunden c:\users\owner\documents\visual studio 2010\projects\monopoly\monopoly\monopoly.cpp 170
InformationsquelleAutor Greg Hewgill
Überprüfen Sie, ob der Pfad zu der ATL-header-Dateien
atlconv.h
undatlbase.h
sichtbar ist Visual StudioIn Ihrem monopoly.cpp Datei mit der rechten Maustaste auf die Zeile
#include <atlconv.h>
und wählen Sie Dokument Öffnen atlconv.h. Wenn die header-Datei richtig öffnet, dann bedeutet es, es gibt kein problem mit der Lage. Stattdessen, wenn Sie einen Fehler löst, dann bedeutet es, VStudio kann die Datei nicht finden und das ist der Grund, warum es sagt, 'id nicht gefunden'.In der Fehlermeldung, VStudio zeigt den Pfad zu dem Ordner, wo es sah für die header-Datei. Überprüfen Sie, ob die Liste enthält einen Pfad ähnlich "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\ce\atlmfc\include", wo der ATL-header-Dateien vorhanden sind. Falls es nicht vorhanden ist, fügen Sie den Pfad (verwenden Sie den entsprechenden Pfad zu Ihrem Betriebssystem und der version von VStudio, die Sie verwenden), wie folgt: Visual Studio: Extras->Optionen->Projekte und Projektmappen- > VC++ - Verzeichnisse-> "Zeige Verzeichnisse für Include-Dateien".
InformationsquelleAutor Ann Catherine Jose