Build-Fehler unter VS 2005
-
Hallo,
ich habe folgendes Problem: Ich möchte das Modul pocketknife (http://sourceforge.net/project/showfiles.php?group_id=96814) mit VS 2005 kompilieren. Das Modul enthält allerdings nur Projektdateien für ältere IDEs. In diesen funktioniert der Build auch.
VS 2005 kann zwar die Projektdateien konvertieren und das Projekt einlesen, beim Versuch das Modul zu kompilieren gibt es jedoch folgende Fehler:
------ Build started: Project: PocketKnife, Configuration: Debug Win32 ------ Compiling... BaseTypeEmu.cpp c:\dokumente und einstellungen\administrator\eigene dateien\visual studio 2005\projects\pocketknife\include\pocketknife\basetypeemu.h(149) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\dokumente und einstellungen\administrator\eigene dateien\visual studio 2005\projects\pocketknife\include\pocketknife\basetypeemu.h(232) : see reference to class template instantiation 'BaseTypeEmu<TYPE>' being compiled c:\dokumente und einstellungen\administrator\eigene dateien\visual studio 2005\projects\pocketknife\include\pocketknife\basetypeemu.h(149) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\dokumente und einstellungen\administrator\eigene dateien\visual studio 2005\projects\pocketknife\src\basetypeemu.cpp(40) : see reference to class template instantiation 'BaseTypeEmu<TYPE>' being compiled with [ TYPE=double ] c:\dokumente und einstellungen\administrator\eigene dateien\visual studio 2005\projects\pocketknife\include\pocketknife\basetypeemu.h(149) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\dokumente und einstellungen\administrator\eigene dateien\visual studio 2005\projects\pocketknife\src\basetypeemu.cpp(62) : see reference to class template instantiation 'BaseTypeEmu<TYPE>' being compiled with [ TYPE=float ] c:\dokumente und einstellungen\administrator\eigene dateien\visual studio 2005\projects\pocketknife\include\pocketknife\basetypeemu.h(149) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\dokumente und einstellungen\administrator\eigene dateien\visual studio 2005\projects\pocketknife\src\basetypeemu.cpp(84) : see reference to class template instantiation 'BaseTypeEmu<TYPE>' being compiled with [ TYPE=int ] ImageTool.cpp c:\dokumente und einstellungen\administrator\eigene dateien\visual studio 2005\projects\pocketknife\src\imagetool.cpp(463) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\dokumente und einstellungen\administrator\eigene dateien\visual studio 2005\projects\pocketknife\src\imagetool.cpp(464) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\dokumente und einstellungen\administrator\eigene dateien\visual studio 2005\projects\pocketknife\src\imagetool.cpp(465) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int Generating Code... Build log was saved at "file://c:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Visual Studio 2005\Projects\pocketknife\build\VC.NET\Debug\BuildLog.htm" PocketKnife - 7 error(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Woran liegt das und wie kann man das beheben (Compiler-Einstellungen???)?
-
Warum benutzt ihr nicht einfach die MSDN, wenn euch eine Fehlermeldung unklar ist? Tippt doch einfach mal in den MSDN-Index (gibts auch in der IDE!) C4430 ein, und ihr bekommt ne Erklärtung.
-
Vermutlich hast du bei manchen Funktionsdeklarationen den Rückgabetyp nicht angegeben. Ansonsten müsste man den Code kennen um mehr sagen zu können.
-
Ich würde den Code ungern ändern, da es ja ein fremdes Modul ist, das ich nur benutzen möchte - der Code an sich dürfte schon funktionsfähig sein. Ich bin auf der Suche nach einer Einstellung, die mich den Code kompilieren läßt, um das Modul mit einem eigenen Programm zu verwenden.
Die MSDN erklärt zwar den die Ursache des Fehler, aber ich möchte den Code ja nicht ändern, sondern wie gesagt nur kompilieren - ältere VS-Versionen schaffen das mit dem Code ja auch...
-
Ältere Versionen unterstützen auch ältere Standards.
Überlegt Euch ob ihr das Programm jetzt anpasst oder in 10 Jahren neu schreibt
Wir haben hier mit VS2005 ganz ähnliche "Probleme", und das ist auch ganz gut so, immerhin gewöhnen sich die ganzen K&R-Deppen hier so langsam mal ordentliches Standard-C(++) an
Ach: Für den Fehler "default-int" gibt es mit ziemlich hoher Sicherheit keinen Schalter, sagt zumindest der MS-Consultant hier im Haus (und der sollte es wissen bei der Kohle die er bekommt)
-
pdadev schrieb:
Ich würde den Code ungern ändern, da es ja ein fremdes Modul ist, das ich nur benutzen möchte - der Code an sich dürfte schon funktionsfähig sein. Ich bin auf der Suche nach einer Einstellung, die mich den Code kompilieren läßt, um das Modul mit einem eigenen Programm zu verwenden.
Die MSDN erklärt zwar den die Ursache des Fehler, aber ich möchte den Code ja nicht ändern, sondern wie gesagt nur kompilieren - ältere VS-Versionen schaffen das mit dem Code ja auch...
Ja, dann habt ihr damals (verständlicherweise) kein ISO-C++ programmiert. Weil der alte VC++ 6.0 nunmal keinen ISO-Standard unterstützt hat. Jetzt machen sich verständlicherweise diese Fehler bemerkbar, weil ab VC++ 2003 der Compiler (zum Glück!) den ISO-C++ Standard unterstützt. Und nur diesen! Alles andere ist falsch. Und deshalb spuckt er wohl auch Fehler aus. Den Fehler müsst ihr beheben.