Wie wird meine exee in VC++ 2008 übersetzt?



  • Hi com,

    Wenn ich mal so aus neugier in die Binärstruktur meiner von VC erstellte exe reinschau fällt mir auf, dass da haufenweise XML code drinn ist:

    MeineExe.exe

    MZ {Diverser Machinencode}
    ÿ                                                                    Næ@»±¿Dÿÿÿÿÿÿÿÿþÿÿÿ   ä @                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        €                 0  €              	  H   X@  V  ä    
     0  €              	  H   X@  V  ä 0€  V  ä
        ä 0€  V  äÿÿÿÿÿÿÿÿþÿÿÿ 
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
        <security>
          <requestedPrivileges>
            <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
          </requestedPrivileges>
        </security>
      </trustInfo>
      <dependency>
        <dependentAssembly>
          <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
        </dependentAssembly>
      </dependency>
    </assembly>PAPADDINGXXPADDINGPADDINGXXPADDI{...}DDING      000$0*0/04090>0D0L0`0{0„0Ÿ0©0¼0Æ0Ë0Ð0ò0÷0 111#1)101D1I1O1W1]1c1p1v11ž1¦1¯1µ1½1É1Û1æ1ì152;2C2J2O2U2[¡3·3¾34
    444(4.4B4W4b4z444Ú4ß4 55$5È5Í5ß5ý566€6†66ª6÷6ü6A7d7q7}7…77™7½7Å7Ð7Ö7Ü7â7è7î7ô7ú7          ¨0´0¸0Ü0à04181Ì1Ð1ð122 0     0
    

    Was hat den das zu bedeuten?

    Kann es sein das ich mein Projekt speziel einstellen muss, wenn ich meine Applikationen veröfendlichen will?

    Und was ist mit der CRT, kann ich mich darauf verlassen das diese auf jedem Windows System installiert ist oder kann ich diese abhängigkeit umgehen?

    Danke im Voraus

    Mfg
    CRTnub



  • wofür dieser code ist weiß ich auchnicht, vielleicht für den loader vom betriebssystem oder für den startup-code oder so.

    aber die abhängigkeit kannst du umgehen.

    bei visual c++ 2008:

    projekt -> eigenschaften -> konfigurationseigenschaften -> c/c++ ->
    codegenerierung -> laufzeitbibliothek -> Multithread (ohne dll)



  • Thx helferlein das war genau das was ich gesucht hab!

    Jetzt weis ich auch wofür der XML code ist, die CRT benötigt diese zum laden der Anwendung.

    Das hat was mit der Manifestdatai zu tun, die wird anscheinend in die Exe mit hineinkopiert und dann von der Laufzeitbibliothek gelesen.

    Man kann das in

    projekt -> eigenschaften -> konfigurationseigenschaften -> Linker ->
    Manifestdatei -> Manifest generieren -> und dann mit nein abschalten

    In VC 2008 führt das aber zu einen fehler mit der CRT, wenn man die CRT aber so einbindet wie du es beschrieben hast kann man auch die Manifest abschalten und der XML code is auch weg

    Weis einer mehr darüber bzw, kann man die Laufzeitbibliothek auch ganz weglasen?

    Mfg
    CRTnub



  • Das Manifest solltest Du nicht abschalten, denn sonst wird Deine Anwendung ab Vista "virtualisiert"!



  • das ist dann blöd ... aber in anderen kommerzionellen Anwendungen gibt es doch auch keine Mainfests oder doch?



  • Es gibt in allen Kommerziellen Applikationen kein Manifest, wenn diese nicht für Vista entiwckelt wurden. In allen anderen gibt es ein Manifest, da sie sich sonst unter Vista und höher nicht so verhalten, wenn Du es als "Erfinder" gedacht hast.


Log in to reply