64 Bit compillieren im VC8 unter Vista - Visual Studio 2005



  • Hallo,

    Ich versuche unter Windows Vista und dem Visual Studio 2005 - mit Service Pack 1 - eine 64 Bit binary zu erstellen.

    Erstmal mit diesem kleinen Testprogramm (Der inhalt des Programmes ist absichtlich ineffizient! )

    Code:

    // primtest.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
    //
    
    #include "stdafx.h"
    #include "iostream"
    #include <windows.h>
    #include <time.h>
    
    using namespace std;
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	cout << "Starte Primtest" << endl;
    	int startzeit = time( NULL );
    	int found = 0;
    	for(int i=0; i < 100000; i++ )
    	{
    		bool isPrim = true;
    		int j=i/2;
    		while( j > 1 )
    		{
    			int k = i % j;
    			if( k == 0 )
    			{
    				isPrim = false;
    			}
    			j--;
    		}
    		if( isPrim )
    			found++;
    			//cout << "primzahl " << i << endl;
    	}
    
    	int endzeit = time( NULL );
    	cout << "Primtest Ende. Gefunden: " << found << " in: " << (endzeit - startzeit) <<  endl;
    	Sleep( 500000 );
    	return 0;
    }
    

    Ich stelle also auf "Link Time code Generation" und im Linker auf die Einstellung "Zielcomputer MachineX64(/MACHINE:X64)"

    Der Linker bringt dann diese Fehlermeldung:
    Fehler 4 fatal error LNK1112: Modul-Computertyp "X86" steht in Konflikt mit dem Zielcomputertyp "x64".

    Laut MSDN bedeutet dies:
    Der Linker versucht aus dem Objectfile den Zielcomputer herauszufinden. wenn sich dieser von der internen einstellung unterscheidet gibt es diese Meldung.

    Wo aber kann ich für die Objekterstellung die Architektur ändern? Ich konnte hier trotzt ausführlicher Recherche nichts finden...

    Hat schon mal wer ein 64 bit Vista projekt compilert und einen Tipp hierfür?



  • x64 hat mit Vista primär nichts zu tun...

    Wenn Du ein Win32-Projekt angelegt hast, dann empfehle ich Dir einfach ein "x64" Target noch hinzuzufügen:
    Build|Configuration Manager...|Active solution platform:|New...|x64

    Hmmm.... bei mir ging das mal, aber jetzt scheint es da irgendein Problem zu geben... versuch es mal bei Dir!



  • Danke dem Tipp. An dieser Stelle kann ich aber nur "Pocket PC 2003" und "Smartphone 2003" auswählen. Es gibt dort kein X64 😞



  • Das ist mir auch aufgefallen... es scheint mir aber ein Bug zu sein... bevor ich das SP1 installiert habe, ging es nämlich noch!
    Hast Du auch VS2005-SP1?



  • Ja - genau das Problem wie du - das haben die scheint es mit dem SP1 raus gemacht...

    leider funktioniert das VS2005 nicht wirklich sinnig ohne das SP1. Gibt es schon einen Patch für das Pack?



  • Ach und Nachtrag...

    Unter windows XP ist auch mit SP1 noch das 64 Bit Target da. Aber wenn ich da das Programm compilliere und auf Vista Spiele kommt "Side By Side Configuration Error"... und es startet nicht.



  • venra schrieb:

    Unter windows XP ist auch mit SP1 noch das 64 Bit Target da.

    Bei mir ist es auf jeden Fall nicht da...

    venra schrieb:

    Aber wenn ich da das Programm compilliere und auf Vista Spiele kommt "Side By Side Configuration Error"... und es startet nicht.

    Vermutlich hast Du dann die "falsche" Version der CRT installiert. Linke es doch statisch dann umgehst Du die ganzen besch****erten Probleme mit SxS...



  • Vermutlich hast Du dann die "falsche" Version der CRT installiert. Linke es doch statisch dann umgehst Du die ganzen besch****erten Probleme mit SxS...

    Genau das würde ich sehr gerne machen.
    Wist du wo ich da was einstellen muss dass er genau dies tut?



  • "Project|Properties|Configuration Properties|C/C++|Code generation|Runtime library" Hier dann irgendwas auswählen *ohne* DLL!

    PS: Hab es mal hier gemeldet:
    https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=271646

    Es könnte auch mit dem "VS2005 Extensions for WPF&WCF Nov.2006" zu tun haben...



  • Danke Jochen Kalmbach - damit hat zumindest das cross-compillieren jetzt funktioniert.


Log in to reply