Code::Blocks mit GCC äquivalent zu MSVC++?



  • Hallo Coder,
    habe derzeit ein kleines Problem mit der Kompilierung eines Projektes von Sourceforge, welches mit MSVC++ erstellt wurde. Und zwar möchte ich nur ungerne Microsofts Express Editionen installieren, da ich für diese gegenwärtig nur schwerlich soviel freien Speicher wie nötig auf Partition C:\ bereitstellen kann. Außerdem sind meine Ressourcen allgemein ziemlich begrenzt und deswegen erschien mir Code::Blocks eine vernünftige Alternative, zumal dieses ebenfalls MSVC++-Projektdateien lesen kann und ich OpenSource gerne soweit möglich gegenüber propietären Lösungen bevorzuge. Soweit sogut, nur beim kompilieren des Unterprojektes InstantVNC von EchoVNC (übrigends mein Lieblings-VNC-Derivat finde ich sogar besser als UltraVNC, da es ohne Addons die Portfreigabe-Problematik löst.) Nur erhalte ich wenn ich es kompilieren möchte in der Sourcefile ZipUnzip32.cpp folgende Fehler:

    ||=== miniWinVNC, Win32 Release ===|
    :11|1|macro names must be identifiers|
    C:\InstantVNC_1.40_src\InstantVNC\ZipUnZip32\zipunzip32.h|231|warning: no newline at end of file|
    C:\InstantVNC_1.40_src\InstantVNC\ZipUnZip32\ZipUnzip32.cpp||In member function `bool CZipUnZip32::ZipDirectory(char*, char*, char*, bool)':|
    C:\InstantVNC_1.40_src\InstantVNC\ZipUnZip32\ZipUnzip32.cpp|140|error: non-lvalue in assignment|
    C:\InstantVNC_1.40_src\InstantVNC\ZipUnZip32\ZipUnzip32.cpp|141|error: non-lvalue in assignment|
    C:\InstantVNC_1.40_src\InstantVNC\ZipUnZip32\ZipUnzip32.cpp|142|error: non-lvalue in assignment|
    ||=== Build finished: 4 errors, 1 warnings ===|

    Der Code bei dem die Fehler auftreten:

    {
    	// Map the dll functions we need to use 
    	(_ZIP_USER_FUNCTIONS)m_PZipInit = (_ZIP_USER_FUNCTIONS)GetProcAddress(m_hZipDll, "ZpInit"); //Das ist Zeile 140
    	(_DLL_ZIP)m_PZipArchive			= (_DLL_ZIP)GetProcAddress(m_hZipDll, "ZpArchive");
    	(ZIPSETOPTIONS)m_PZipSetOptions = (ZIPSETOPTIONS)GetProcAddress(m_hZipDll, "ZpSetOptions");
    	if (!m_PZipArchive || !m_PZipSetOptions || !m_PZipInit)
    	{
    		FreeLibrary(m_hZipDll);
    		FreeUpZipMemory();
    		return false;
    	}
    }
    

    Kann ich mit weiteren Fehlern rechnen mit dem GCC-Compiler? Würdet ihr mir raten den MS Compiler für Projekte von Sourceforge zu nehmen?

    Noch ein paar Infos zu meinem System:
    Compiler: GNU GCC 3.4.5
    IDE: Code::Blocks 8.02
    OS: Win XP SP3
    CPU: Intel Celeron 1,8Ghz

    Noch by the way eine kleine mathematische Frage damit ich damit nicht extra einen Thread aufmachen muss:
    Ich habe gelesen das jede Rechenart sich mit der Operation + nachbauen lässt, beispielsweise ist die Subtraktion auch nur eine Addition mit der Gegenzahl des Subtrahenden, also 5 - 2 = 3 ließe sich auch als 5 + -2 ausdrücken. Kennt jemand eine Seite auf der abgebildet ist, wie sich verschiedene Rechenarten allein mit der +-Operation konstruieren lassen?

    Danke im voraus für die Antwort
    DEADBEEF



  • Kann mir keiner weiterhelfen?
    Fehlt noch eine wichtige Information?



  • Zuerst solltest du halbwegs aktuelle Versionen der verwendeten Programme installieren und sehen ob der Fehler noch auftritt.

    MinGW gibt's hier: http://tdragon.net/recentgcc/
    Code::Blocks hier: http://forums.codeblocks.org/index.php/topic,11504.0.html

    Edit: liegt aber wohl eher weniger an einer alten Version, als dass das kein gültiger C++ - Code zu sein scheint. Probier mal sowas wie (_ZIP_USER_FUNCTIONS)m_PZipInit durch *reinterpret_cast<_ZIP_USER_FUNCTIONS*>(PZipInit) zu ersetzen. Da kommen einem zwar immer noch die Tränen, aber wenigstens sollte es gültiges C++ sein.



  • Nanyuki schrieb:

    *reinterpret_cast<_ZIP_USER_FUNCTIONS*>(PZipInit)

    *reinterpret_cast<_ZIP_USER_FUNCTIONS*>(&PZipInit) 😉

    Da kommen einem zwar immer noch die Tränen

    Jupp 🙂


Anmelden zum Antworten