[gelöst] Linker-Probleme trotz korrekt aussehender Property-Sheets



  • Hallo!

    Vielleicht hat von Euch ja noch einer einen Tipp, was ich hier übersehen haben könnte. Mein Problem ist folgendes:

    Ich nutze Visual C++ Express (mit WinSDK 7.1 64Bit Compiler) und versuche für die einfache Nutzung eines SDKs (über das ich mit bestimmter Hardware reden will) ein Property-Sheet anzulegen, so dass ich include-Pfad und Link-Pfad nur einmal für dieses SDK definieren muss und nicht in all den Projekten wieder, wo ich das SDK verwenden möchte.

    Das Property-Sheet sieht so aus:

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <ImportGroup Label="PropertySheets" />
      <PropertyGroup Label="UserMacros" />
      <PropertyGroup>
        <IncludePath>$(SISODIR5)\include;$(IncludePath)</IncludePath>
      </PropertyGroup>
      <PropertyGroup>
        <LibraryPath>$(SISODIR5)\lib\visualc;$(LibraryPath)</LibraryPath>
      </PropertyGroup>
      <ItemDefinitionGroup>
        <Link>
          <AdditionalDependencies>fglib5.lib;%(AdditionalDependencies)</AdditionalDependencies>
        </Link>
      </ItemDefinitionGroup>
      <ItemGroup />
    </Project>
    

    wobei SISODIR5 eine Umgebungsvariable ist, die bei der Installation des SDKs gesetzt wird. In $(SISODIR5)\include befinden sich die Header und in $(SISODIR5)\lib\visualc liegt die Datei fglib5.lib (und eine Ebene höher eine dazu passende DLL).

    In den Projekteinstellungen referenziere ich das gezeigte Property-Sheet. Es klappt auch halbwegs; denn die Header-Dateien werden vom Compiler gefunden. Allerdings meldet sich der Linker immer noch mit "LNK2019" und beschwert sich über undefinierte Symbole, die aber eigentlich in fglib5.lib "zu finden" sind.

    Habt ihr da eine Idee?
    Könnte ich mir irgendwie zeigen lassen, wie die IDE den Linker genau aufruft?

    TIA,
    kk


  • Mod

    Lass Dir mal über die Build Optionen die Daten in einerm Log ausgeben.



  • Ah, ich die Stelle bei den Projekteinstellungen gefunden, wo ich mir den Linker-Aufruf anzeigen lassen kann. Allerdings wundere ich mich da gerade, dass da nirgens fglib5.lib erwähnt wird.

    Project Property Page > Linker > Commandline

    /OUT:"C:\Users\xxx\Documents\Visual Studio 2010\Projects\Proto\x64\Debug\SimpleFgTest.exe"
    /INCREMENTAL /NOLOGO /MANIFEST
    /ManifestFile:"x64\Debug\SimpleFgTest.exe.intermediate.manifest"
    /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG
    /PDB:"C:\Users\xxx\Documents\Visual Studio 2010\Projects\Proto\x64\Debug\SimpleFgTest.pdb"
    /SUBSYSTEM:CONSOLE
    /PGD:"C:\Users\xxx\Documents\Visual Studio 2010\Projects\Proto\x64\Debug\SimpleFgTest.pgd"
    /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X64 /ERRORREPORT:QUEUE
    

    Ist das normal so? Steckt die fglib5.lib-Info in irgendwelchen "Manifesten" oder sowas? Oder müsste ich hier fglib5.lib irgendwo sehen?



  • Ich denke nicht, dass das normal ist und dass die Libs da alle auftauchen müssten. Wie es scheint, habe ich es irgendwie geschafft, dass das AdditionalDependencies-Property in den Projekteinstellungen all die "geerbten" Dependencies überschrieb. Ich bin hier nochmal explizit auf "inherit from..." gegangen und nun klappt es endlich ... 🙂


Anmelden zum Antworten