fatal error LNK1181: Eingabedatei ".\Objs\Release\test.obj" kann nicht geöffnet werden



  • Zitat aus der Dokumentation:

    Mit der /P-Option wird die Kompilierung unterdrückt. Auch bei Verwendung von /Fo (Name der Objektdatei) wird keine OBJ-Datei erstellt. Sie müssen die vorverarbeiteten Datei erneut zum Kompilieren übergeben.

    Und wie übergebe ich die *.i-Dateien zum kompilieren?



  • Benutzt denn keiner Visual Studio?

    Das Ding ist so ja nicht zu gebrauchen.



  • LOL! MSVC soll nicht zu gebrauchen sein? Nur weil der Anwender unfähig ist, muß es nicht das Tool sein.

    1. http://msdn.microsoft.com/de-de/library/y6b12xkc(VS.80).aspx

    2. Schon mal ein Project-Clean probiert?

    3. Ist überhaupt .\Objs\Release\test.obj vorhanden??????????????????????? Das ist immerhin die Aussage des Linkers. Und übrigen, das ist eine Linker-Meldung und keine Präprozessor-Meldung.



  • Ich habe mehrere Tools im Einsatz wie Codewarrior oder XCode. So sollen IDE's sein. Schnell und sollen funktionieren. Ich habe noch nie eine IDE gesehen, die sich dermaßen GEGEN den Anwender stellt. Wenn man z. B. eine Source Datei per Drag&Drop einfügt, dann sagt der Compiler, dass er sie nicht finden kann. Man muss den Include-Pfad selbst einstellen. LOL. Das ist Kindergarten!

    So. Nein, wie schon geschrieben, wenn man den Präprozessor einstellt, dann werden die Präprozessor-Dateien Dateien erstellt, aber nicht kompiliert. Siehe Zitat:

    Mit der /P-Option wird die Kompilierung unterdrückt. Auch bei Verwendung von /Fo (Name der Objektdatei) wird keine OBJ-Datei erstellt. Sie müssen die vorverarbeiteten Datei erneut zum Kompilieren übergeben.

    So kann auch keine Objekt-Datei entstehen.



  • Ja, haste jetzt ein Clean und Build probiert, oder nicht? 🙄

    Und wenn die anderen Tools sooo viel besser sind, dann benutze doch MSVC einfach nicht!



  • Ja natürlich. Projekt auch mehrfach schon von Grund auf neu erstellt. Hab auch schon alle Einstellungen durchprobiert.

    Ja, ich nehme für x86 Compilierung Codewarrior für Macintosh. Das funktioniert super. Jedoch ist Codewarrior für Mac schon 2004 abgekündigt worden und läuft vielleicht mit 10.6 nicht mehr. Daher der Umstieg. Ich meine zur Not kram ich noch Codearrior für Windows raus. Das läuft dann ewig 🙂



  • Sorry, hat sich erledigt, etwas überschnell gepostet.



  • Hast du denn die Lösung gefunden?
    Ich kriege immoment bei dem versuch mein d3d9 hook in x64 zu compilern folgenden error und verzweifle schier dran 😞 :

    LINK||fatal error LNK1181: Eingabedatei "C:\Programme\CodeBlocks\MinGW\lib\x64\d3d9.lib" kann nicht geöffnet werden.|
    

    Ich Benutze die IDE Code::Blocks und den x64 compiler der "Microsoft Platform SDK for Windows Server 2003 R2".
    Die DirectX SDK ist ebenfalls gelinkt und es klappt bei der IDE MSVS Express einwandfrei die Source zu compilen, doch unterstützt diese keine x64 compiler und ich muss auf CB zurückgreifen
    Habe bereits stundenlang gegoogelt und bin zu keinem ergebnis gekomen 😞

    Hier meine Source:
    main.h:

    #pragma once
    #pragma comment(lib, "user32.lib")
    #pragma comment(lib, "d3d9.lib")
    #pragma comment(lib, "d3dx9.lib")
    
    #include "windows.h"
    #include <cstdio>
    #include "d3d9.h"
    #include "d3dx9.h"
    
    typedef HRESULT(__stdcall* EndScene_t)(LPDIRECT3DDEVICE9);
    EndScene_t pEndScene;
    
    ID3DXFont* pFont;
    
    void *DetourFunc(BYTE *src, const BYTE *dst, const int len)
    {
        BYTE *jmp = (BYTE*)malloc(len+5);
        DWORD dwback;
        VirtualProtect(src, len, PAGE_READWRITE, &dwback);
        memcpy(jmp, src, len);
        jmp += len;
        jmp[0] = 0xE9;
        *(DWORD*)(jmp+1) = (DWORD)(src+len - jmp) - 5;
        src[0] = 0xE9;
        *(DWORD*)(src+1) = (DWORD)(dst - src) - 5;
        VirtualProtect(src, len, dwback, &dwback);
        return (jmp-len);
    }
    
    void DrawRect (LPDIRECT3DDEVICE9 Device_t, int X, int Y, int L, int H, D3DCOLOR color)
    {
        D3DRECT rect = {X, Y, X+L, Y+H};
        Device_t->Clear(1, &rect, D3DCLEAR_TARGET, color, 0, 0); // bei Google gibt’s näheres
    }
    
    void DrawFont (int X, int Y, D3DCOLOR Color, char *format, ...)
    {
        char buffer[256];
        va_list args; // deswegen: #include <cstdio>
        va_start (args, format);
        vsprintf (buffer,format, args);
        RECT FontRect = { X, Y, X + 120, Y + 16 };
        pFont->DrawText( NULL, buffer, -1, &FontRect, DT_NOCLIP , Color ); // Zeichnen
        va_end (args);
    }
    

    main.cpp:

    #include "main.h"
    
    const D3DCOLOR txtPink = D3DCOLOR_ARGB(255, 255, 0, 255); // Alpha, Rot, Grün, Blau
    const D3DCOLOR txtGreen = D3DCOLOR_ARGB(255, 0, 255, 0); // Alpha, Rot, Grün, Blau
    const D3DCOLOR txtRot = D3DCOLOR_ARGB(255, 255, 0, 0); // Alpha, Rot, Grün, Blau
    const D3DCOLOR txtBlack = D3DCOLOR_ARGB(255, 0, 0, 0); // Alpha, Rot, Grün, Blau
    
    HRESULT __stdcall hkEndScene(LPDIRECT3DDEVICE9 pDevice)//die funktion, in der gemalt werden kann
    {
        // Schrift initialisieren -> Nur eimal!
        static char bFontCheck=0;
        static ID3DXFont *pFont=0;
        if (!bFontCheck)
        {
            D3DXCreateFont(pDevice, 14, 0, FW_NORMAL, 1, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,
                            ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial", &pFont );
            ++bFontCheck;
        }
        // Schrift initialisiert
        DrawRect (pDevice, 10, 10, 200, 200, txtGreen);
        DrawFont (300, 50, txtBlack, "Deathly Assassin" );
        return pEndScene(pDevice);
    }
    
    void InitHook()
    {
        HMODULE hModule = NULL;
        while ( !hModule )
        {
            hModule = GetModuleHandleA( "d3d9.dll" ); // Handle zur DLL holen
            Sleep( 100 ); // 100ms warten
        }
        pEndScene = ( EndScene_t )DetourFunc((PBYTE) 0x4FDD71B0,(PBYTE)hkEndScene, 5);
    }
    
    int WINAPI DllMain(HINSTANCE hInst,DWORD reason,LPVOID reserved)
    {
        switch (reason)
        {
        case DLL_PROCESS_ATTACH:
            //starte hooking
            CreateThread(0, 0, (LPTHREAD_START_ROUTINE) InitHook, 0, 0, 0);
            //beende hooking
            break;
        }
        return true;
    }
    


  • Hallo,

    nein aktuell habe ich keine Lösung gefunden. Ich bin bis jetzt noch bei Codewarrior geblieben. Das läuft noch unter Snow Leopard 🙂



  • kk, trotzdem danke 😉

    Hat jemand anders noch eine Idee warum dieser fehler kommt 😕 ? 🙂



  • Wenn der Compiler was nicht finden kann liegt es meist daran, das es sich um Dateien handelt die nicht mit dem Compiler geliefert werden.

    Es ist notwendig unter Extras/Optionen/Projekte../VC++-Verzeichnisse die
    Pfade für Includedateien und Bibliotheksdateien für den konkreten Rechner
    auf dem der Compiler läuft richtig anzugeben.

    Während das Platform-SDK sich selbst eintragen kann muss man das für das
    Direct-X SDK seltsamerweise selbst erledigen.

    Die Bibliotheken selbst sollten dann unter Projekt/Einstellungen angegeben
    werden - und zwar jeweils für Release sowie Debug -Version.

    PS:
    Die Idee solche Dateien per Drag and Drop einzufügen klingt nicht schlecht,
    funktioniert aber (noch) nicht. 🙄


Anmelden zum Antworten