Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Forentreff 2012     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: MFC (Visual C++) ::  Sehr spezielles Problem - (DLL + Manifest)     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
nep
Autor

Benutzerprofil
Anmeldungsdatum: 20.12.2002
Beiträge: 913
Beitrag nep Autor 12:03:12 15.05.2007   Titel:   Sehr spezielles Problem - (DLL + Manifest)            Zitieren

Hi,
also hier sind ja auch einige MVPs unterwegs (Jochen Kalmbach und Martin Richter)... ich hoffe mal dass mir insbesondere einer von euch irgendwie weiter helfen kann, da das doch etwas sehr speziell ist.
Und zwar geht es grob gesagt erst mal darum, dass ich die (MFC)Runtime-DLLs selbst weitergeben will und nicht die verwenden will, welche schon auf dem Ziel-System installiert sind. Dazu gibts auch einen Artikel, welcher glaube auch auf eine Anregung von Jochen zurückgeht(?). Da wird halt beschrieben wie man die Manifest-Datei(en) ändern muss, usw...
Zu finden hier:
http://mcblogs.craalse.de/sku?title=visual_studio_2005_runtimes_part_2_sich&more=1&c=1&tb=1&pb=1

Bei normalen MFC-Apps wo eine .exe erzeugt wird funktioniert das auch wunderbar.
Das was ich erstelle ist aber keine MFC-Applikation, sondern ein DirectShow-Filter. Vom Anwendungstyp her ist das zunächst nichts weiter als eine normale Win32-DLL bzw. ein COM-Objekt. In diesem Filter benutze ich jedoch auch ein paar MFC-Dinge, so dass ich somit auch Abhängigkeiten auf MFC-Bibliotheken habe. Das Problem ist, dass sich mein Filter auf Entwickler-PCs wunderbar registrieren (mit regsvr32) lässt, auf den Ziel-Systemen jedoch nicht. Da kommt dann immer eine Fehlermeldung, dass LoadLibrary meinen Filter nicht laden konnte. Ich habe mittlerweile die Bibliothek bestimmt an der das liegt, das ist nämlich die MFC80.DLL. Wenn mein Filter darauf keine Abhängigkeit hat funktioniert das registrieren einwandfrei. Wird wohl daran liegen, dass das unterschiedliche Versionen sind (Entwickler-PC <-> Ziel-PC).
Wenn ich jetzt allerdings wie im Artikel beschrieben diese Schritte genauso ausführe, so klappt das leider trotzdem nicht. Ich kann den Filter nicht nal mehr auf meinem eigenen PC registrieren. Da kommt eine Fehlermeldung, wonach eine C-Runtime nicht geladen werden kann. Und wenn ich mir die Abhängigkeiten im Dependency-Walker anschaue, dann sind da auf einmal ganz komische Pfade zu den DLLs drinen, die ich gar nicht angegeben habe... Wird wohl irgendwie damit zusammenhängen, dass das halt keine normale MFC-Applikation ist... aber irgendwie muss man doch trotzdem angeben können, dass der Filter die DLL nehmen soll die ich mitgebe, anstatt immer im WinSxS Ordner zu suchen?
Wenn das mit der Manifest-Datei nicht möglich ist... hätte ich noch andere Möglichkeiten, z.B. evtl mit LoadLibrary oder so? Wobei LoadLibrary ja auch nicht so prickelnd sein soll...

Achja... wenn ich in den Projekt-Einstellungen angebe, dass er die MFC statisch linken soll dann bringt das auch nichts. Die Abhängigkeiten sind natürlich trotzdem noch da.

Wär super wenn mir da jemand irgendwie weiterhelfen könnte...
Martin Richter
Moderator

Benutzerprofil
Anmeldungsdatum: 18.04.2006
Beiträge: 13509
Beitrag Martin Richter Moderator 13:14:40 15.05.2007   Titel:              Zitieren

Lassen wir erstmal den ganzen Manifest-Kram beiseite und klären folgendes:

Statisches Linken erscheint mir in Deinem Fall als beste Lösung. Wenn immer noch Referenzen auf ein Manifest erzeigt werden und Depends auch solche Abhängigkkeiten anzeigt ist zu klären woher die kommen.

1. Verwendest Du eine Third-Party Library.
2. Hast Du evtl. durch ds probieten irgendeinen Manifest Trümmer noch rumliegen, der einfach falsch ist?
3. Verwende die Linker Option /Verbose um mitzubekommen wer welche Library linken will.

Nur wenn statisches Linken nicht gewünscht/möglich ist würde ich mich um eine app-lokale Installation bemühen. Aber auch das nur, wenn es notwendig ist.

Vergiss nicht, dass ganze kann fürchterlich in die Hose gehen, wenn andere Applikationen in deren Prozess Dein COM Objekt geladen wird auch soähnliche Sachen macht und braucht...
Reduziere die Abhängigkeiten! Oder verwende SxS! Also nicht app-lokal!

_________________
Martin Richter (MVP für C++) WWJD http://blog.m-ri.de
"A well-written program is its own heaven; a poorly written program is its own hell!" The Tao of Programming
nep
Autor

Benutzerprofil
Anmeldungsdatum: 20.12.2002
Beiträge: 913
Beitrag nep Autor 14:43:08 15.05.2007   Titel:              Zitieren

Hmm also eine Third-Party Lib verwende ich nicht. Ich benutze halt noch GdiPlus; ob das jetzt als 3rd party lib zählt weiß ich nicht. Da gibts aber eigentlich auch keine Probleme, hoffe ich zumindest.

Also ich muss zugeben ich kenn mich mit dem ganzen Manifest-Zeugs sowieso nicht aus, aber ich denke nicht, dass da noch alte ungültige Sachen rumliegen. Ich hab eben das "Hauptmanifest", dass ich selbst manipuliert habe, und die beiden anderen Manifeste jeweils im VCR und MFC Unterordner unter release. Manifest wird eben auch nicht mehr in das Kompilat eingebettet. Das sollte eigentlich schon stimmen.

Was meinst du mit "verwende SxS"? Evtl. so einen MSI Installer mit dem die ganzen DLLs dann auch auf dem Zielsystem in dem WinSxS Ordner installiert werden?
Weil genau das hab ich jetzt nämlich vorhin versucht. Da gibst ja diese VC-Redistributable Packages und das hab ich jetzt mal auf einem Ziel-Rechner probiert. Und nach der Installation hat das Registrieren des Filters dann auch tatsächlich problemlos geklappt.
Ist das dann prinzipiell okay, wenn ich zusätzlich zu meinem Filter einfach noch diesen Installer weitergebe, oder kanns da auch zu Schwierigkeiten kommen? (evtl. dass dann andere Programme nicht mehr funktionieren, obwohl das ja meines Wissens genau durch dieses SxS-Dingens verhindert werden soll?)
Martin Richter
Moderator

Benutzerprofil
Anmeldungsdatum: 18.04.2006
Beiträge: 13509
Beitrag Martin Richter Moderator 14:48:48 15.05.2007   Titel:              Zitieren

nep schrieb:
Hmm also eine Third-Party Lib verwende ich nicht. Ich benutze halt noch GdiPlus; ob das jetzt als 3rd party lib zählt weiß ich nicht. Da gibts aber eigentlich auch keine Probleme, hoffe ich zumindest.


Das ist schon mal gut! Also kümmern wir uns um statisches Linken!

nep schrieb:

Also ich muss zugeben ich kenn mich mit dem ganzen Manifest-Zeugs sowieso nicht aus, aber ich denke nicht, dass da noch alte ungültige Sachen rumliegen. Ich hab eben das "Hauptmanifest", dass ich selbst manipuliert habe, und die beiden anderen Manifeste jeweils im VCR und MFC Unterordner unter release. Manifest wird eben auch nicht mehr in das Kompilat eingebettet. Das sollte eigentlich schon stimmen.


Wenn Du statisch linkst solltest Du die Manifeste die erzeugt werden gar nicht anrühren. Theoretisch benötigst Du dann nämlich gar kein Manifest!

Was steht denn nun in dem Manifest, das Du verwendest?

nep schrieb:

Was meinst du mit "verwende SxS"? Evtl. so einen MSI Installer mit dem die ganzen DLLs dann auch auf dem Zielsystem in dem WinSxS Ordner installiert werden?

Will heißen. Lass die Manifeste automatisch erzegen und installiere vcredist_x86.exe! Dass instaliert unter XP/2003 eben Side by Side (abk. SxS).

nep schrieb:

Weil genau das hab ich jetzt nämlich vorhin versucht. Da gibst ja diese VC-Redistributable Packages und das hab ich jetzt mal auf einem Ziel-Rechner probiert. Und nach der Installation hat das Registrieren des Filters dann auch tatsächlich problemlos geklappt.
Ist das dann prinzipiell okay, wenn ich zusätzlich zu meinem Filter einfach noch diesen Installer weitergebe, oder kanns da auch zu Schwierigkeiten kommen? (evtl. dass dann andere Programme nicht mehr funktionieren, obwohl das ja meines Wissens genau durch dieses SxS-Dingens verhindert werden soll?)


Nein! Wenn Du die entsprechenden Runtime Module mit den Merge Modulen installierst sollte alles gehen!


Dennoch! Du musst gar nichts weiter installieren wenn Du statisch linkst!

_________________
Martin Richter (MVP für C++) WWJD http://blog.m-ri.de
"A well-written program is its own heaven; a poorly written program is its own hell!" The Tao of Programming
nep
Autor

Benutzerprofil
Anmeldungsdatum: 20.12.2002
Beiträge: 913
Beitrag nep Autor 15:11:07 15.05.2007   Titel:              Zitieren

Martin Richter schrieb:

Wenn Du statisch linkst solltest Du die Manifeste die erzeugt werden gar nicht anrühren. Theoretisch benötigst Du dann nämlich gar kein Manifest!

Was steht denn nun in dem Manifest, das Du verwendest?


Ok, also ich hab jetzt nochmal testweise es so eingestellt, dass das Manifest nicht eingebettet wird, so dass ichs mir anschauen kann. Hab eingestellt, dass die MFC statisch hinzugelinkt werden soll (mehr muss ich doch dann nicht einstellen oder?!). Und im Manifest krieg ich dann eben trotzdem dependencies auf Microsoft.VC80.CRT und Microsoft.VC80.MFC. Das ganze erzeugte Manifest-File sieht dann so aus, falls es dich interessiert:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC80.MFC" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
</assembly>
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.MFC" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC80.MFC" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
</assembly>




Martin Richter schrieb:

Lass die Manifeste automatisch erzegen und installiere vcredist_x86.exe! Dass instaliert unter XP/2003 eben Side by Side (abk. SxS).

Martin Richter schrieb:

... Wenn Du die entsprechenden Runtime Module mit den Merge Modulen installierst sollte alles gehen!

Also das was du oben sagst, hab ich eben genauso gemacht und das hat dann auch funktioniert, also nehme ich mal an, dass das schon richtig ist.
Was meinst du mit den Runtime und Merge Modulen :confused: Sry ich kenn mich damit absolut nicht aus... wie gesagt ich hab eben einfach ganz normal kompiliert (MFC statisch gelinkt) und dann auf den Zielsystemen eben jene vcredist_x86.exe dann noch installiert. Was hat das mit Merge Modulen auf sich?


Martin Richter schrieb:

Dennoch! Du musst gar nichts weiter installieren wenn Du statisch linkst!


Ja, das dachte ich auch immer... aber das scheint hier wohl bisschen anders zu sein. Wenn ich ne normale MFC Exe erzeuge und da statisch linke, dann hab ich tatsächlich keine Abhängigkeit auf die Runtimes. Bei meinem Projekt hier aber schon. Frag mich nicht warum, aber in Bezug auf DirectShow sind mir/uns hier schon so einige komische Dinge aufgefallen. Kann natürlich sein, dass man noch zusätzlich was anderes einstellen muss... keine Ahnung.
Also will dich damit jetzt eigentlich auch nicht soo nerven... wenn ich es richtig verstanden habe, dann wird es so wie ich es jetzt gemacht habe schon irgendwie passen ;)

Danke auf jeden Fall :live:


Zuletzt bearbeitet von nep am 15:12:36 15.05.2007, insgesamt 1-mal bearbeitet
Martin Richter
Moderator

Benutzerprofil
Anmeldungsdatum: 18.04.2006
Beiträge: 13509
Beitrag Martin Richter Moderator 16:13:32 15.05.2007   Titel:              Zitieren

Bevor ich detailierter antworte:
Bitte gehe auch in die C++ Compiler Optionen.

C/C++ -> Code Generation -> Runtime Library
Dort muss stehen: /MT (für Release) bzw. /MTd (für Debug)!
Das ist evtl. noch Dein Fehler.

Wie Du sehen kannst wird nur noch für die CRT ein Manifest gefordert.

Nach dieser Einstellung sollte gar kein Manifest mehr gefordert werden.

_________________
Martin Richter (MVP für C++) WWJD http://blog.m-ri.de
"A well-written program is its own heaven; a poorly written program is its own hell!" The Tao of Programming
nep
Autor

Benutzerprofil
Anmeldungsdatum: 20.12.2002
Beiträge: 913
Beitrag nep Autor 16:49:24 15.05.2007   Titel:              Zitieren

Also da hatte ich auch schon davor verschiedene Einstellungen ausprobiert aber das brachte bzw. bringt nichts. Sprich immer noch Abhängigkeit auf die MFC.
Keine Ahnung wieso, aber ist halt wohl leider so.
Aber wie gesagt, wenn ich vcredist_x86.exe auf den Ziel-PCs vorher installiere, dann klappt es auch... hab mich halt gefragt, ob das generell okay ist oder obs da noch irgendwelche Fallstricke gibt.

Bzw ist mir mal aufgefallen, dass ich meinen Filter generell nur dann registrieren kann, wenn das Manifest eingebettet ist. Sobald das nicht eingebettet ist funktioniert es nicht.
Martin Richter
Moderator

Benutzerprofil
Anmeldungsdatum: 18.04.2006
Beiträge: 13509
Beitrag Martin Richter Moderator 16:50:31 15.05.2007   Titel:              Zitieren

Kannst Du mir das Projekt mailen oder ist es secret?

_________________
Martin Richter (MVP für C++) WWJD http://blog.m-ri.de
"A well-written program is its own heaven; a poorly written program is its own hell!" The Tao of Programming
nep
Autor

Benutzerprofil
Anmeldungsdatum: 20.12.2002
Beiträge: 913
Beitrag nep Autor 17:01:16 15.05.2007   Titel:              Zitieren

Naja also von meiner Seite aus würde ich es schon machen, aber das darf ich nicht, da das firmen-intern ist.
Also ich weiß dass sich das auch alles bisschen komisch anhört, aber es ist halt wirklich bisschen anders wie wenn man "normale" Applikationen erstellt. Wir programmieren hier hauptsächlich DirectShow-Filter, und das was wir da machen, das ist schon sehr sehr speziell. V.a. ist die Filter-Programmierung in DirectShow an sich schon etwas... nun ja... seltsam. Was da z.T. in den Dokus steht kannst oft grad vergessen, weil es dann doch wieder ganz anders ist. Das ist auch bei Leuten hier so, die das schon jahrelang machen. Da ist man oftmals heilfroh wenn man ein Projekt überhaupt compiliert kriegt ;)
---
Unregistrierter




Beitrag --- Unregistrierter 17:08:11 15.05.2007   Titel:              Zitieren

Zitat:
Naja also von meiner Seite aus würde ich es schon machen, aber das darf ich nicht, da das firmen-intern ist.


kannste kein minimal-bespiel erstellen das den fehler zeigt??
Martin Richter
Moderator

Benutzerprofil
Anmeldungsdatum: 18.04.2006
Beiträge: 13509
Beitrag Martin Richter Moderator 18:08:53 15.05.2007   Titel:              Zitieren

Also mich macht einfach stutzig, dass ein Manifest erzeugt wird wenn MFC+CRT auf statischer Bindung stehen.

Erzeuge mal ein Projekt From-Scratch!

EDIT: Noch ne Idee. Schick mir doch nur mal die vcproj Datei, oder alle Object-Dateien.

_________________
Martin Richter (MVP für C++) WWJD http://blog.m-ri.de
"A well-written program is its own heaven; a poorly written program is its own hell!" The Tao of Programming


Zuletzt bearbeitet von Martin Richter am 18:09:39 15.05.2007, insgesamt 1-mal bearbeitet
nep
Autor

Benutzerprofil
Anmeldungsdatum: 20.12.2002
Beiträge: 913
Beitrag nep Autor 18:18:28 15.05.2007   Titel:              Zitieren

Wie stellst du dir das vor? Also so einfach ist das nicht, da man für einen Filter immer bestimmte Schnittstellen implementieren muss. Aber ich meine ok, generell kann ich da mal schauen... (komm ich heute aber nicht mehr dazu).
Wobei das aber dann auch für denjenigen der sich das anschauen will nicht so einfach ist. Platform-SDK muss installiert sein, ok das haben die meisten wohl. Aber dann muss man erst mal das Projekt kompilieren könne, und ob dus glaubst oder nicht, aber nur weil man bei einem PC das Projekt kompilieren kann, heißt das noch lange nicht dass man es auf dem anderen auch kann (und das hat nix mit hardcodierten Pfaden oder so zu tun, obwohl man da z.T. auch nicht drum rum kommt).
Das fängt z.B. schon damit an, dass es da sog. Baseclasses gibt die man sich selbst kompilieren muss im Platform-SDK, und da gibts manchmal auch Probleme, auch wenn man da schon ne kompilierte Lib-Datei weitergibt...

<EDIT>
Das war an "---" gerichtet ;)

Also ich hab dir die Projekt-Datei an die Email-Adresse geschickt die in deinem Blog steht. Interessant ist nur die Win32|Release Konfiguration, die anderen kannst du vergessen, da ich die nicht benutze. Da stehen z.T. Sachen drinnen die ungültig sind.
Ich muss jetzt aber auch los von der Arbeit, sonst verpass ich meinen Bus. Bin erst später wieder zuhause (->Training).
</EDIT>


Zuletzt bearbeitet von nep am 18:40:35 15.05.2007, insgesamt 2-mal bearbeitet
Martin Richter
Moderator

Benutzerprofil
Anmeldungsdatum: 18.04.2006
Beiträge: 13509
Beitrag Martin Richter Moderator 20:28:53 15.05.2007   Titel:              Zitieren

Also das Release Projekt müsste korrekt sein. Es dürfte keinen Bezug auf die MFC+CRT als DLL geben.

Rebuild All hast Du gemacht?

Schau mal mit Dumpbin in die Objekt Dateien, welche einen manifest Eintrag enthält!

_________________
Martin Richter (MVP für C++) WWJD http://blog.m-ri.de
"A well-written program is its own heaven; a poorly written program is its own hell!" The Tao of Programming
nep
Autor

Benutzerprofil
Anmeldungsdatum: 20.12.2002
Beiträge: 913
Beitrag nep Autor 21:58:33 15.05.2007   Titel:              Zitieren

Jo, hab paar mal Rebuild und Clean und sowas gemacht.

Das mit den Objektdateien kann ich erst morgen machen, da ich dann erst wieder auf der Arbeit bin.

Aber wie gesagt ich will dich gleich mal vorwarnen: Als ich hier vor kurzem angefangen habe zu arbeiten wurde mir auch einiges erzählt wie das so mit DirectShow abläuft... da hab ich zuerst auch mal müde gelächelt, aber habs dann selbst erfahren müssen. Da entbehrt manches wirklich jeglicher Logik...
Muss hier aber jetzt natürlich nicht unbedingt zutreffen.
nep
Autor

Benutzerprofil
Anmeldungsdatum: 20.12.2002
Beiträge: 913
Beitrag nep Autor 10:14:26 16.05.2007   Titel:              Zitieren

Wie mache ich das denn mit dumpbin, bzw. woran sehe ich dass da ein Manifest enthalten ist? Sry hab noch nie was damit gemacht...

Mal noch ne andere Frage... gibts eigentlich irgendeine Möglichkeit herauszufinden, ob die DLLs von dem vcredist_x86 schon installiert sind?
Bzw. evtl allgemein, dass man eben schauen kann welche Versionen von welcher DLL in diesem Side by Side Ordner installiert sind?
Martin Richter
Moderator

Benutzerprofil
Anmeldungsdatum: 18.04.2006
Beiträge: 13509
Beitrag Martin Richter Moderator 10:34:09 16.05.2007   Titel:              Zitieren

Dumpbin /ALL auf eine Objekt Datei durchführen

Meistens steht das Manifest direkt oben.
AW DATA #1
00000000: 20 20 20 2F 6D 61 6E 69 66 65 73 74 64 65 70 65 /manifestdepe
00000010: 6E 64 65 6E 63 79 3A 22 74 79 70 65 3D 27 77 69 ndency:"type='wi
00000020: 6E 33 32 27 20 6E 61 6D 65 3D 27 4D 69 63 72 6F n32' name='Micro
00000030: 73 6F 66 74 2E 56 43 38 30 2E 44 65 62 75 67 43 soft.VC80.DebugC
00000040: 52 54 27 20 76 65 72 73 69 6F 6E 3D 27 38 2E 30 RT' version='8.0
00000050: 2E 35 30 37 32 37 2E 37 36 32 27 20 70 72 6F 63 .50727.762' proc
00000060: 65 73 73 6F 72 41 72 63 68 69 74 65 63 74 75 72 essorArchitectur
00000070: 65 3D 27 78 38 36 27 20 70 75 62 6C 69 63 4B 65 e='x86' publicKe
00000080: 79 54 6F 6B 65 6E 3D 27 31 66 63 38 62 33 62 39 yToken='1fc8b3b9
00000090: 61 31 65 31 38 65 33 62 27 22 20 2F 44 45 46 41 a1e18e3b'" /DEFA
000000A0: 55 4C 54 4C 49 42 3A 22 6D 66 63 38 30 64 2E 6C ULTLIB:"mfc80d.l
000000B0: 69 62 22 20 2F 44 45 46 41 55 4C 54 4C 49 42 3A ib" /DEFAULTLIB:
000000C0: 22 6D 66 63 73 38 30 64 2E 6C 69 62 22 20 2F 44 "mfcs80d.lib" /D

Siehe C:\WINDOWS\WinSxS Verzeichnis
Dort siehst Du exakt die Namen die auch im Manifest gefordert werden.

C:\WINDOWS\WinSxS\x86_Microsoft.VC80.MFCLOC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_91481303
C:\WINDOWS\WinSxS\x86_Microsoft.VC80.ATL_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_6e805841
C:\WINDOWS\WinSxS\x86_Microsoft.VC80.ATL_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_cbb27474
C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd
C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.163_x-ww_681e29fb
C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_6b128700
C:\WINDOWS\WinSxS\x86_Microsoft.VC80.MFC_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_dec6ddd2
C:\WINDOWS\WinSxS\x86_Microsoft.VC80.MFC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_3bf8fa05
C:\WINDOWS\WinSxS\x86_Microsoft.VC80.MFCLOC_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_3415f6d0

_________________
Martin Richter (MVP für C++) WWJD http://blog.m-ri.de
"A well-written program is its own heaven; a poorly written program is its own hell!" The Tao of Programming
nep
Autor

Benutzerprofil
Anmeldungsdatum: 20.12.2002
Beiträge: 913
Beitrag nep Autor 11:25:00 16.05.2007   Titel:              Zitieren

Also...

das sieht eigentlich bei allen relativ gleich aus, ist wohl bei allen ein Manifest-Eintrag enhalten. Hier mal ein Auszug:

Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
RAW DATA #1
  00000000: 20 20 20 2F 6D 61 6E 69 66 65 73 74 64 65 70 65     /manifestdepe
  00000010: 6E 64 65 6E 63 79 3A 22 74 79 70 65 3D 27 77 69  ndency:"type='wi
  00000020: 6E 33 32 27 20 6E 61 6D 65 3D 27 4D 69 63 72 6F  n32' name='Micro
  00000030: 73 6F 66 74 2E 56 43 38 30 2E 43 52 54 27 20 76  soft.VC80.CRT' v
  00000040: 65 72 73 69 6F 6E 3D 27 38 2E 30 2E 35 30 36 30  ersion='8.0.5060
  00000050: 38 2E 30 27 20 70 72 6F 63 65 73 73 6F 72 41 72  8.0' processorAr
  00000060: 63 68 69 74 65 63 74 75 72 65 3D 27 78 38 36 27  chitecture='x86'
  00000070: 20 70 75 62 6C 69 63 4B 65 79 54 6F 6B 65 6E 3D   publicKeyToken=
  00000080: 27 31 66 63 38 62 33 62 39 61 31 65 31 38 65 33  '1fc8b3b9a1e18e3
  00000090: 62 27 22 20 2F 44 45 46 41 55 4C 54 4C 49 42 3A  b'" /DEFAULTLIB:
  000000A0: 22 75 75 69 64 2E 6C 69 62 22 20 2F 44 45 46 41  "uuid.lib" /DEFA
  000000B0: 55 4C 54 4C 49 42 3A 22 75 75 69 64 2E 6C 69 62  ULTLIB:"uuid.lib
  000000C0: 22 20 2F 44 45 46 41 55 4C 54 4C 49 42 3A 22 6D  " /DEFAULTLIB:"m
  000000D0: 66 63 38 30 2E 6C 69 62 22 20 2F 44 45 46 41 55  fc80.lib" /DEFAU
  000000E0: 4C 54 4C 49 42 3A 22 6D 66 63 73 38 30 2E 6C 69  LTLIB:"mfcs80.li
  000000F0: 62 22 20 2F 44 45 46 41 55 4C 54 4C 49 42 3A 22  b" /DEFAULTLIB:"
  00000100: 6D 73 76 63 72 74 2E 6C 69 62 22 20 2F 44 45 46  msvcrt.lib" /DEF
  00000110: 41 55 4C 54 4C 49 42 3A 22 6B 65 72 6E 65 6C 33  AULTLIB:"kernel3
  00000120: 32 2E 6C 69 62 22 20 2F 44 45 46 41 55 4C 54 4C  2.lib" /DEFAULTL
  00000130: 49 42 3A 22 75 73 65 72 33 32 2E 6C 69 62 22 20  IB:"user32.lib"
  00000140: 2F 44 45 46 41 55 4C 54 4C 49 42 3A 22 67 64 69  /DEFAULTLIB:"gdi
  00000150: 33 32 2E 6C 69 62 22 20 2F 44 45 46 41 55 4C 54  32.lib" /DEFAULT
  00000160: 4C 49 42 3A 22 6D 73 69 6D 67 33 32 2E 6C 69 62  LIB:"msimg32.lib
  00000170: 22 20 2F 44 45 46 41 55 4C 54 4C 49 42 3A 22 63  " /DEFAULTLIB:"c
  00000180: 6F 6D 64 6C 67 33 32 2E 6C 69 62 22 20 2F 44 45  omdlg32.lib" /DE
  00000190: 46 41 55 4C 54 4C 49 42 3A 22 77 69 6E 73 70 6F  FAULTLIB:"winspo
  000001A0: 6F 6C 2E 6C 69 62 22 20 2F 44 45 46 41 55 4C 54  ol.lib" /DEFAULT
  000001B0: 4C 49 42 3A 22 61 64 76 61 70 69 33 32 2E 6C 69  LIB:"advapi32.li
  000001C0: 62 22 20 2F 44 45 46 41 55 4C 54 4C 49 42 3A 22  b" /DEFAULTLIB:"
  000001D0: 73 68 65 6C 6C 33 32 2E 6C 69 62 22 20 2F 44 45  shell32.lib" /DE
  000001E0: 46 41 55 4C 54 4C 49 42 3A 22 63 6F 6D 63 74 6C  FAULTLIB:"comctl
  000001F0: 33 32 2E 6C 69 62 22 20 2F 44 45 46 41 55 4C 54  32.lib" /DEFAULT
  00000200: 4C 49 42 3A 22 73 68 6C 77 61 70 69 2E 6C 69 62  LIB:"shlwapi.lib
  00000210: 22 20 2F 69 6E 63 6C 75 64 65 3A 5F 5F 61 66 78  " /include:__afx
  00000220: 46 6F 72 63 65 45 58 43 4C 55 44 45 20 2F 69 6E  ForceEXCLUDE /in
  00000230: 63 6C 75 64 65 3A 5F 5F 61 66 78 46 6F 72 63 65  clude:__afxForce
  00000240: 53 54 44 41 46 58 20 2F 6D 61 6E 69 66 65 73 74  STDAFX /manifest
  00000250: 64 65 70 65 6E 64 65 6E 63 79 3A 22 74 79 70 65  dependency:"type
  00000260: 3D 27 77 69 6E 33 32 27 20 6E 61 6D 65 3D 27 4D  ='win32' name='M
  00000270: 69 63 72 6F 73 6F 66 74 2E 56 43 38 30 2E 4D 46  icrosoft.VC80.MF
  00000280: 43 27 20 76 65 72 73 69 6F 6E 3D 27 38 2E 30 2E  C' version='8.0.
  00000290: 35 30 36 30 38 2E 30 27 20 70 72 6F 63 65 73 73  50608.0' process
  000002A0: 6F 72 41 72 63 68 69 74 65 63 74 75 72 65 3D 27  orArchitecture='
  000002B0: 78 38 36 27 20 70 75 62 6C 69 63 4B 65 79 54 6F  x86' publicKeyTo
  000002C0: 6B 65 6E 3D 27 31 66 63 38 62 33 62 39 61 31 65  ken='1fc8b3b9a1e
  000002D0: 31 38 65 33 62 27 22 20 2F 69 6E 63 6C 75 64 65  18e3b'" /include
  000002E0: 3A 3F 3F 33 40 59 41 58 50 41 58 40 5A 20 2F 44  :??3@YAXPAX@Z /D
  000002F0: 45 46 41 55 4C 54 4C 49 42 3A 22 75 75 69 64 2E  EFAULTLIB:"uuid.
  00000300: 6C 69 62 22 20 2F 44 45 46 41 55 4C 54 4C 49 42  lib" /DEFAULTLIB
  00000310: 3A 22 75 75 69 64 2E 6C 69 62 22 20 2F 44 45 46  :"uuid.lib" /DEF
  00000320: 41 55 4C 54 4C 49 42 3A 22 75 75 69 64 2E 6C 69  AULTLIB:"uuid.li
  00000330: 62 22 20 2F 44 45 46 41 55 4C 54 4C 49 42 3A 22  b" /DEFAULTLIB:"
  00000340: 6F 6C 65 64 6C 67 2E 6C 69 62 22 20 2F 44 45 46  oledlg.lib" /DEF
  00000350: 41 55 4C 54 4C 49 42 3A 22 6F 6C 65 33 32 2E 6C  AULTLIB:"ole32.l
  00000360: 69 62 22 20 2F 44 45 46 41 55 4C 54 4C 49 42 3A  ib" /DEFAULTLIB:
  00000370: 22 6F 6C 65 61 75 74 33 32 2E 6C 69 62 22 20 2F  "oleaut32.lib" /
  00000380: 44 45 46 41 55 4C 54 4C 49 42 3A 22 75 75 69 64  DEFAULTLIB:"uuid
  00000390: 2E 6C 69 62 22 20 2F 44 45 46 41 55 4C 54 4C 49  .lib" /DEFAULTLI
  000003A0: 42 3A 22 75 72 6C 6D 6F 6E 2E 6C 69 62 22 20 2F  B:"urlmon.lib" /
  000003B0: 44 45 46 41 55 4C 54 4C 49 42 3A 22 6D 73 76 63  DEFAULTLIB:"msvc
  000003C0: 70 72 74 22 20 2F 6D 61 6E 69 66 65 73 74 64 65  prt" /manifestde
  000003D0: 70 65 6E 64 65 6E 63 79 3A 22 74 79 70 65 3D 27  pendency:"type='
  000003E0: 77 69 6E 33 32 27 20 6E 61 6D 65 3D 27 4D 69 63  win32' name='Mic
  000003F0: 72 6F 73 6F 66 74 2E 56 43 38 30 2E 43 52 54 27  rosoft.VC80.CRT'
  00000400: 20 76 65 72 73 69 6F 6E 3D 27 38 2E 30 2E 35 30   version='8.0.50
  00000410: 36 30 38 2E 30 27 20 70 72 6F 63 65 73 73 6F 72  608.0' processor
  00000420: 41 72 63 68 69 74 65 63 74 75 72 65 3D 27 78 38  Architecture='x8
  00000430: 36 27 20 70 75 62 6C 69 63 4B 65 79 54 6F 6B 65  6' publicKeyToke
  00000440: 6E 3D 27 31 66 63 38 62 33 62 39 61 31 65 31 38  n='1fc8b3b9a1e18
  00000450: 65 33 62 27 22 20 2F 44 45 46 41 55 4C 54 4C 49  e3b'" /DEFAULTLI
  00000460: 42 3A 22 4C 49 42 43 4D 54 22 20 2F 44 45 46 41  B:"LIBCMT" /DEFA
  00000470: 55 4C 54 4C 49 42 3A 22 4F 4C 44 4E 41 4D 45 53  ULTLIB:"OLDNAMES
  00000480: 22 20                                            "
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
RAW DATA #1
00000000: 20 20 20 2F 6D 61 6E 69 66 65 73 74 64 65 70 65 /manifestdepe
00000010: 6E 64 65 6E 63 79 3A 22 74 79 70 65 3D 27 77 69 ndency:"type='wi
00000020: 6E 33 32 27 20 6E 61 6D 65 3D 27 4D 69 63 72 6F n32' name='Micro
00000030: 73 6F 66 74 2E 56 43 38 30 2E 43 52 54 27 20 76 soft.VC80.CRT' v
00000040: 65 72 73 69 6F 6E 3D 27 38 2E 30 2E 35 30 36 30 ersion='8.0.5060
00000050: 38 2E 30 27 20 70 72 6F 63 65 73 73 6F 72 41 72 8.0' processorAr
00000060: 63 68 69 74 65 63 74 75 72 65 3D 27 78 38 36 27 chitecture='x86'
00000070: 20 70 75 62 6C 69 63 4B 65 79 54 6F 6B 65 6E 3D publicKeyToken=
00000080: 27 31 66 63 38 62 33 62 39 61 31 65 31 38 65 33 '1fc8b3b9a1e18e3
00000090: 62 27 22 20 2F 44 45 46 41 55 4C 54 4C 49 42 3A b'" /DEFAULTLIB:
000000A0: 22 75 75 69 64 2E 6C 69 62 22 20 2F 44 45 46 41 "uuid.lib" /DEFA
000000B0: 55 4C 54 4C 49 42 3A 22 75 75 69 64 2E 6C 69 62 ULTLIB:"uuid.lib
000000C0: 22 20 2F 44 45 46 41 55 4C 54 4C 49 42 3A 22 6D " /DEFAULTLIB:"m
000000D0: 66 63 38 30 2E 6C 69 62 22 20 2F 44 45 46 41 55 fc80.lib" /DEFAU
000000E0: 4C 54 4C 49 42 3A 22 6D 66 63 73 38 30 2E 6C 69 LTLIB:"mfcs80.li
000000F0: 62 22 20 2F 44 45 46 41 55 4C 54 4C 49 42 3A 22 b" /DEFAULTLIB:"
00000100: 6D 73 76 63 72 74 2E 6C 69 62 22 20 2F 44 45 46 msvcrt.lib" /DEF
00000110: 41 55 4C 54 4C 49 42 3A 22 6B 65 72 6E 65 6C 33 AULTLIB:"kernel3
00000120: 32 2E 6C 69 62 22 20 2F 44 45 46 41 55 4C 54 4C 2.lib" /DEFAULTL
00000130: 49 42 3A 22 75 73 65 72 33 32 2E 6C 69 62 22 20 IB:"user32.lib"
00000140: 2F 44 45 46 41 55 4C 54 4C 49 42 3A 22 67 64 69 /DEFAULTLIB:"gdi
00000150: 33 32 2E 6C 69 62 22 20 2F 44 45 46 41 55 4C 54 32.lib" /DEFAULT
00000160: 4C 49 42 3A 22 6D 73 69 6D 67 33 32 2E 6C 69 62 LIB:"msimg32.lib
00000170: 22 20 2F 44 45 46 41 55 4C 54 4C 49 42 3A 22 63 " /DEFAULTLIB:"c
00000180: 6F 6D 64 6C 67 33 32 2E 6C 69 62 22 20 2F 44 45 omdlg32.lib" /DE
00000190: 46 41 55 4C 54 4C 49 42 3A 22 77 69 6E 73 70 6F FAULTLIB:"winspo
000001A0: 6F 6C 2E 6C 69 62 22 20 2F 44 45 46 41 55 4C 54 ol.lib" /DEFAULT
000001B0: 4C 49 42 3A 22 61 64 76 61 70 69 33 32 2E 6C 69 LIB:"advapi32.li
000001C0: 62 22 20 2F 44 45 46 41 55 4C 54 4C 49 42 3A 22 b" /DEFAULTLIB:"
000001D0: 73 68 65 6C 6C 33 32 2E 6C 69 62 22 20 2F 44 45 shell32.lib" /DE
000001E0: 46 41 55 4C 54 4C 49 42 3A 22 63 6F 6D 63 74 6C FAULTLIB:"comctl
000001F0: 33 32 2E 6C 69 62 22 20 2F 44 45 46 41 55 4C 54 32.lib" /DEFAULT
00000200: 4C 49 42 3A 22 73 68 6C 77 61 70 69 2E 6C 69 62 LIB:"shlwapi.lib
00000210: 22 20 2F 69 6E 63 6C 75 64 65 3A 5F 5F 61 66 78 " /include:__afx
00000220: 46 6F 72 63 65 45 58 43 4C 55 44 45 20 2F 69 6E ForceEXCLUDE /in
00000230: 63 6C 75 64 65 3A 5F 5F 61 66 78 46 6F 72 63 65 clude:__afxForce
00000240: 53 54 44 41 46 58 20 2F 6D 61 6E 69 66 65 73 74 STDAFX /manifest
00000250: 64 65 70 65 6E 64 65 6E 63 79 3A 22 74 79 70 65 dependency:"type
00000260: 3D 27 77 69 6E 33 32 27 20 6E 61 6D 65 3D 27 4D ='win32' name='M
00000270: 69 63 72 6F 73 6F 66 74 2E 56 43 38 30 2E 4D 46 icrosoft.VC80.MF
00000280: 43 27 20 76 65 72 73 69 6F 6E 3D 27 38 2E 30 2E C' version='8.0.
00000290: 35 30 36 30 38 2E 30 27 20 70 72 6F 63 65 73 73 50608.0' process
000002A0: 6F 72 41 72 63 68 69 74 65 63 74 75 72 65 3D 27 orArchitecture='
000002B0: 78 38 36 27 20 70 75 62 6C 69 63 4B 65 79 54 6F x86' publicKeyTo
000002C0: 6B 65 6E 3D 27 31 66 63 38 62 33 62 39 61 31 65 ken='1fc8b3b9a1e
000002D0: 31 38 65 33 62 27 22 20 2F 69 6E 63 6C 75 64 65 18e3b'" /include
000002E0: 3A 3F 3F 33 40 59 41 58 50 41 58 40 5A 20 2F 44 :??3@YAXPAX@Z /D
000002F0: 45 46 41 55 4C 54 4C 49 42 3A 22 75 75 69 64 2E EFAULTLIB:"uuid.
00000300: 6C 69 62 22 20 2F 44 45 46 41 55 4C 54 4C 49 42 lib" /DEFAULTLIB
00000310: 3A 22 75 75 69 64 2E 6C 69 62 22 20 2F 44 45 46 :"uuid.lib" /DEF
00000320: 41 55 4C 54 4C 49 42 3A 22 75 75 69 64 2E 6C 69 AULTLIB:"uuid.li
00000330: 62 22 20 2F 44 45 46 41 55 4C 54 4C 49 42 3A 22 b" /DEFAULTLIB:"
00000340: 6F 6C 65 64 6C 67 2E 6C 69 62 22 20 2F 44 45 46 oledlg.lib" /DEF
00000350: 41 55 4C 54 4C 49 42 3A 22 6F 6C 65 33 32 2E 6C AULTLIB:"ole32.l
00000360: 69 62 22 20 2F 44 45 46 41 55 4C 54 4C 49 42 3A ib" /DEFAULTLIB:
00000370: 22 6F 6C 65 61 75 74 33 32 2E 6C 69 62 22 20 2F "oleaut32.lib" /
00000380: 44 45 46 41 55 4C 54 4C 49 42 3A 22 75 75 69 64 DEFAULTLIB:"uuid
00000390: 2E 6C 69 62 22 20 2F 44 45 46 41 55 4C 54 4C 49 .lib" /DEFAULTLI
000003A0: 42 3A 22 75 72 6C 6D 6F 6E 2E 6C 69 62 22 20 2F B:"urlmon.lib" /
000003B0: 44 45 46 41 55 4C 54 4C 49 42 3A 22 6D 73 76 63 DEFAULTLIB:"msvc
000003C0: 70 72 74 22 20 2F 6D 61 6E 69 66 65 73 74 64 65 prt" /manifestde
000003D0: 70 65 6E 64 65 6E 63 79 3A 22 74 79 70 65 3D 27 pendency:"type='
000003E0: 77 69 6E 33 32 27 20 6E 61 6D 65 3D 27 4D 69 63 win32' name='Mic
000003F0: 72 6F 73 6F 66 74 2E 56 43 38 30 2E 43 52 54 27 rosoft.VC80.CRT'
00000400: 20 76 65 72 73 69 6F 6E 3D 27 38 2E 30 2E 35 30 version='8.0.50
00000410: 36 30 38 2E 30 27 20 70 72 6F 63 65 73 73 6F 72 608.0' processor
00000420: 41 72 63 68 69 74 65 63 74 75 72 65 3D 27 78 38 Architecture='x8
00000430: 36 27 20 70 75 62 6C 69 63 4B 65 79 54 6F 6B 65 6' publicKeyToke
00000440: 6E 3D 27 31 66 63 38 62 33 62 39 61 31 65 31 38 n='1fc8b3b9a1e18
00000450: 65 33 62 27 22 20 2F 44 45 46 41 55 4C 54 4C 49 e3b'" /DEFAULTLI
00000460: 42 3A 22 4C 49 42 43 4D 54 22 20 2F 44 45 46 41 B:"LIBCMT" /DEFA
00000470: 55 4C 54 4C 49 42 3A 22 4F 4C 44 4E 41 4D 45 53 ULTLIB:"OLDNAMES
00000480: 22 20 "
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
RAW DATA #1
  00000000: 20 20 20 2F 6D 61 6E 69 66 65 73 74 64 65 70 65     /manifestdepe
  00000010: 6E 64 65 6E 63 79 3A 22 74 79 70 65 3D 27 77 69  ndency:"type='wi
  00000020: 6E 33 32 27 20 6E 61 6D 65 3D 27 4D 69 63 72 6F  n32' name='Micro
  00000030: 73 6F 66 74 2E 56 43 38 30 2E 43 52 54 27 20 76  soft.VC80.CRT' v
  00000040: 65 72 73 69 6F 6E 3D 27 38 2E 30 2E 35 30 36 30  ersion='8.0.5060
  00000050: 38 2E 30 27 20 70 72 6F 63 65 73 73 6F 72 41 72  8.0' processorAr
  00000060: 63 68 69 74 65 63 74 75 72 65 3D 27 78 38 36 27  chitecture='x86'
  00000070: 20 70 75 62 6C 69 63 4B 65 79 54 6F 6B 65 6E 3D   publicKeyToken=
  00000080: 27 31 66 63 38 62 33 62 39 61 31 65 31 38 65 33  '1fc8b3b9a1e18e3
  00000090: 62 27 22 20 2F 44 45 46 41 55 4C 54 4C 49 42 3A  b'" /DEFAULTLIB:
  000000A0: 22 75 75 69 64 2E 6C 69 62 22 20 2F 44 45 46 41  "uuid.lib" /DEFA
  000000B0: 55 4C 54 4C 49 42 3A 22 75 75 69 64 2E 6C 69 62  ULTLIB:"uuid.lib
  000000C0: 22 20 2F 44 45 46 41 55 4C 54 4C 49 42 3A 22 6D  " /DEFAULTLIB:"m
  000000D0: 66 63 38 30 2E 6C 69 62 22 20 2F 44 45 46 41 55  fc80.lib" /DEFAU
  000000E0: 4C 54 4C 49 42 3A 22 6D 66 63 73 38 30 2E 6C 69  LTLIB:"mfcs80.li
  000000F0: 62 22 20 2F 44 45 46 41 55 4C 54 4C 49 42 3A 22  b" /DEFAULTLIB:"
  00000100: 6D 73 76 63 72 74 2E 6C 69 62 22 20 2F 44 45 46  msvcrt.lib" /DEF
  00000110: 41 55 4C 54 4C 49 42 3A 22 6B 65 72 6E 65 6C 33  AULTLIB:"kernel3
  00000120: 32 2E 6C 69 62 22 20 2F 44 45 46 41 55 4C 54 4C  2.lib" /DEFAULTL
  00000130: 49 42 3A 22 75 73 65 72 33 32 2E 6C 69 62 22 20  IB:"user32.lib"
  00000140: 2F 44 45 46 41 55 4C 54 4C 49 42 3A 22 67 64 69  /DEFAULTLIB:"gdi
  00000150: 33 32 2E 6C 69 62 22 20 2F 44 45 46 41 55 4C 54  32.lib" /DEFAULT
  00000160: 4C 49 42 3A 22 6D 73 69 6D 67 33 32 2E 6C 69 62  LIB:"msimg32.lib
  00000170: 22 20 2F 44 45 46 41 55 4C 54 4C 49 42 3A 22 63  " /DEFAULTLIB:"c
  00000180: 6F 6D 64 6C 67 33 32 2E 6C 69 62 22 20 2F 44 45  omdlg32.lib" /DE
  00000190: 46 41 55 4C 54 4C 49 42 3A 22 77 69 6E 73 70 6F  FAULTLIB:"winspo
  000001A0: 6F 6C 2E 6C 69 62 22 20 2F 44 45 46 41 55 4C 54  ol.lib" /DEFAULT
  000001B0: 4C 49 42 3A 22 61 64 76 61 70 69 33 32 2E 6C 69  LIB:"advapi32.li
  000001C0: 62 22 20 2F 44 45 46 41 55 4C 54 4C 49 42 3A 22  b" /DEFAULTLIB:"
  000001D0: 73 68 65 6C 6C 33 32 2E 6C 69 62 22 20 2F 44 45  shell32.lib" /DE
  000001E0: 46 41 55 4C 54 4C 49 42 3A 22 63 6F 6D 63 74 6C  FAULTLIB:"comctl
  000001F0: 33 32 2E 6C 69 62 22 20 2F 44 45 46 41 55 4C 54  32.lib" /DEFAULT
  00000200: 4C 49 42 3A 22 73 68 6C 77 61 70 69 2E 6C 69 62  LIB:"shlwapi.lib
  00000210: 22 20 2F 69 6E 63 6C 75 64 65 3A 5F 5F 61 66 78  " /include:__afx
  00000220: 46 6F 72 63 65 45 58 43 4C 55 44 45 20 2F 69 6E  ForceEXCLUDE /in
  00000230: 63 6C 75 64 65 3A 5F 5F 61 66 78 46 6F 72 63 65  clude:__afxForce
  00000240: 53 54 44 41 46 58 20 2F 6D 61 6E 69 66 65 73 74  STDAFX /manifest
  00000250: 64 65 70 65 6E 64 65 6E 63 79 3A 22 74 79 70 65  dependency:"type
  00000260: 3D 27 77 69 6E 33 32 27 20 6E 61 6D 65 3D 27 4D  ='win32' name='M
  00000270: 69 63 72 6F 73 6F 66 74 2E 56 43 38 30 2E 4D 46  icrosoft.VC80.MF
  00000280: 43 27 20 76 65 72 73 69 6F 6E 3D 27 38 2E 30 2E  C' version='8.0.
  00000290: 35 30 36 30 38 2E 30 27 20 70 72 6F 63 65 73 73  50608.0' process
  000002A0: 6F 72 41 72 63 68 69 74 65 63 74 75 72 65 3D 27  orArchitecture='
  000002B0: 78 38 36 27 20 70 75 62 6C 69 63 4B 65 79 54 6F  x86' publicKeyTo
  000002C0: 6B 65 6E 3D 27 31 66 63 38 62 33 62 39 61 31 65  ken='1fc8b3b9a1e
  000002D0: 31 38 65 33 62 27 22 20 2F 69 6E 63 6C 75 64 65  18e3b'" /include
  000002E0: 3A 3F 3F 33 40 59 41 58 50 41 58 40 5A 20 2F 44  :??3@YAXPAX@Z /D
  000002F0: 45 46 41 55 4C 54 4C 49 42 3A 22 75 75 69 64 2E  EFAULTLIB:"uuid.
  00000300: 6C 69 62 22 20 2F 44 45 46 41 55 4C 54 4C 49 42  lib" /DEFAULTLIB
  00000310: 3A 22 75 75 69 64 2E 6C 69 62 22 20 2F 44 45 46  :"uuid.lib" /DEF
  00000320: 41 55 4C 54 4C 49 42 3A 22 75 75 69 64 2E 6C 69  AULTLIB:"uuid.li
  00000330: 62 22 20 2F 44 45 46 41 55 4C 54 4C 49 42 3A 22  b" /DEFAULTLIB:"
  00000340: 6F 6C 65 64 6C 67 2E 6C 69 62 22 20 2F 44 45 46  oledlg.lib" /DEF
  00000350: 41 55 4C 54 4C 49 42 3A 22 6F 6C 65 33 32 2E 6C  AULTLIB:"ole32.l
  00000360: 69 62 22 20 2F 44 45 46 41 55 4C 54 4C 49 42 3A  ib" /DEFAULTLIB:
  00000370: 22 6F 6C 65 61 75 74 33 32 2E 6C 69 62 22 20 2F  "oleaut32.lib" /
  00000380: 44 45 46 41 55 4C 54 4C 49 42 3A 22 75 75 69 64  DEFAULTLIB:"uuid
  00000390: 2E 6C 69 62 22 20 2F 44 45 46 41 55 4C 54 4C 49  .lib" /DEFAULTLI
  000003A0: 42 3A 22 75 72 6C 6D 6F 6E 2E 6C 69 62 22 20 2F  B:"urlmon.lib" /
  000003B0: 44 45 46 41 55 4C 54 4C 49 42 3A 22 6D 73 76 63  DEFAULTLIB:"msvc
  000003C0: 70 72 74 22 20 2F 6D 61 6E 69 66 65 73 74 64 65  prt" /manifestde
  000003D0: 70 65 6E 64 65 6E 63 79 3A 22 74 79 70 65 3D 27  pendency:"type='
  000003E0: 77 69 6E 33 32 27 20 6E 61 6D 65 3D 27 4D 69 63  win32' name='Mic
  000003F0: 72 6F 73 6F 66 74 2E 56 43 38 30 2E 43 52 54 27  rosoft.VC80.CRT'
  00000400: 20 76 65 72 73 69 6F 6E 3D 27 38 2E 30 2E 35 30   version='8.0.50
  00000410: 36 30 38 2E 30 27 20 70 72 6F 63 65 73 73 6F 72  608.0' processor
  00000420: 41 72 63 68 69 74 65 63 74 75 72 65 3D 27 78 38  Architecture='x8
  00000430: 36 27 20 70 75 62 6C 69 63 4B 65 79 54 6F 6B 65  6' publicKeyToke
  00000440: 6E 3D 27 31 66 63 38 62 33 62 39 61 31 65 31 38  n='1fc8b3b9a1e18
  00000450: 65 33 62 27 22 20 2F 44 45 46 41 55 4C 54 4C 49  e3b'" /DEFAULTLI
  00000460: 42 3A 22 4C 49 42 43 4D 54 22 20 2F 44 45 46 41  B:"LIBCMT" /DEFA
  00000470: 55 4C 54 4C 49 42 3A 22 4F 4C 44 4E 41 4D 45 53  ULTLIB:"OLDNAMES
  00000480: 22 20                                            "


und direkt danach kommt dieses:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
   Linker Directives
   -----------------
   /manifestdependency:"type='win32'
   name='Microsoft.VC80.CRT'
   version='8.0.50608.0'
   processorArchitecture='x86'
   publicKeyToken='1fc8b3b9a1e18e3b'"
   /DEFAULTLIB:"msvcprt"
   /manifestdependency:"type='win32'
   name='Microsoft.VC80.CRT'
   version='8.0.50608.0'
   processorArchitecture='x86'
   publicKeyToken='1fc8b3b9a1e18e3b'"
   /DEFAULTLIB:"uuid.lib"
   /DEFAULTLIB:"uuid.lib"
   /DEFAULTLIB:"mfc80.lib"
   /DEFAULTLIB:"mfcs80.lib"
   /DEFAULTLIB:"msvcrt.lib"
   /DEFAULTLIB:"kernel32.lib"
   /DEFAULTLIB:"user32.lib"
   /DEFAULTLIB:"gdi32.lib"
   /DEFAULTLIB:"msimg32.lib"
   /DEFAULTLIB:"comdlg32.lib"
   /DEFAULTLIB:"winspool.lib"
   /DEFAULTLIB:"advapi32.lib"
   /DEFAULTLIB:"shell32.lib"
   /DEFAULTLIB:"comctl32.lib"
   /DEFAULTLIB:"shlwapi.lib"
   /include:__afxForceEXCLUDE
   /include:__afxForceSTDAFX
   /manifestdependency:"type='win32'
   name='Microsoft.VC80.MFC'
   version='8.0.50608.0'
   processorArchitecture='x86'
   publicKeyToken='1fc8b3b9a1e18e3b'"
   /include:??3@YAXPAX@Z
   /DEFAULTLIB:"uuid.lib"
   /DEFAULTLIB:"uuid.lib"
   /DEFAULTLIB:"atls.lib"
   /merge:ATL=.rdata
   /DEFAULTLIB:"kernel32.lib"
   /DEFAULTLIB:"user32.lib"
   /DEFAULTLIB:"advapi32.lib"
   /DEFAULTLIB:"ole32.lib"
   /DEFAULTLIB:"shell32.lib"
   /DEFAULTLIB:"oleaut32.lib"
   /DEFAULTLIB:"uuid.lib"
   /DEFAULTLIB:"shlwapi.lib"
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Linker Directives
-----------------
/manifestdependency:"type='win32'
name='Microsoft.VC80.CRT'
version='8.0.50608.0'
processorArchitecture='x86'
publicKeyToken='1fc8b3b9a1e18e3b'"
/DEFAULTLIB:"msvcprt"
/manifestdependency:"type='win32'
name='Microsoft.VC80.CRT'
version='8.0.50608.0'
processorArchitecture='x86'
publicKeyToken='1fc8b3b9a1e18e3b'"
/DEFAULTLIB:"uuid.lib"
/DEFAULTLIB:"uuid.lib"
/DEFAULTLIB:"mfc80.lib"
/DEFAULTLIB:"mfcs80.lib"
/DEFAULTLIB:"msvcrt.lib"
/DEFAULTLIB:"kernel32.lib"
/DEFAULTLIB:"user32.lib"
/DEFAULTLIB:"gdi32.lib"
/DEFAULTLIB:"msimg32.lib"
/DEFAULTLIB:"comdlg32.lib"
/DEFAULTLIB:"winspool.lib"
/DEFAULTLIB:"advapi32.lib"
/DEFAULTLIB:"shell32.lib"
/DEFAULTLIB:"comctl32.lib"
/DEFAULTLIB:"shlwapi.lib"
/include:__afxForceEXCLUDE
/include:__afxForceSTDAFX
/manifestdependency:"type='win32'
name='Microsoft.VC80.MFC'
version='8.0.50608.0'
processorArchitecture='x86'
publicKeyToken='1fc8b3b9a1e18e3b'"
/include:??3@YAXPAX@Z
/DEFAULTLIB:"uuid.lib"
/DEFAULTLIB:"uuid.lib"
/DEFAULTLIB:"atls.lib"
/merge:ATL=.rdata
/DEFAULTLIB:"kernel32.lib"
/DEFAULTLIB:"user32.lib"
/DEFAULTLIB:"advapi32.lib"
/DEFAULTLIB:"ole32.lib"
/DEFAULTLIB:"shell32.lib"
/DEFAULTLIB:"oleaut32.lib"
/DEFAULTLIB:"uuid.lib"
/DEFAULTLIB:"shlwapi.lib"
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
   Linker Directives
   -----------------
   /manifestdependency:"type='win32'
   name='Microsoft.VC80.CRT'
   version='8.0.50608.0'
   processorArchitecture='x86'
   publicKeyToken='1fc8b3b9a1e18e3b'"
   /DEFAULTLIB:"msvcprt"
   /manifestdependency:"type='win32'
   name='Microsoft.VC80.CRT'
   version='8.0.50608.0'
   processorArchitecture='x86'
   publicKeyToken='1fc8b3b9a1e18e3b'"
   /DEFAULTLIB:"uuid.lib"
   /DEFAULTLIB:"uuid.lib"
   /DEFAULTLIB:"mfc80.lib"
   /DEFAULTLIB:"mfcs80.lib"
   /DEFAULTLIB:"msvcrt.lib"
   /DEFAULTLIB:"kernel32.lib"
   /DEFAULTLIB:"user32.lib"
   /DEFAULTLIB:"gdi32.lib"
   /DEFAULTLIB:"msimg32.lib"
   /DEFAULTLIB:"comdlg32.lib"
   /DEFAULTLIB:"winspool.lib"
   /DEFAULTLIB:"advapi32.lib"
   /DEFAULTLIB:"shell32.lib"
   /DEFAULTLIB:"comctl32.lib"
   /DEFAULTLIB:"shlwapi.lib"
   /include:__afxForceEXCLUDE
   /include:__afxForceSTDAFX
   /manifestdependency:"type='win32'
   name='Microsoft.VC80.MFC'
   version='8.0.50608.0'
   processorArchitecture='x86'
   publicKeyToken='1fc8b3b9a1e18e3b'"
   /include:??3@YAXPAX@Z
   /DEFAULTLIB:"uuid.lib"
   /DEFAULTLIB:"uuid.lib"
   /DEFAULTLIB:"atls.lib"
   /merge:ATL=.rdata
   /DEFAULTLIB:"kernel32.lib"
   /DEFAULTLIB:"user32.lib"
   /DEFAULTLIB:"advapi32.lib"
   /DEFAULTLIB:"ole32.lib"
   /DEFAULTLIB:"shell32.lib"
   /DEFAULTLIB:"oleaut32.lib"
   /DEFAULTLIB:"uuid.lib"
   /DEFAULTLIB:"shlwapi.lib"
Martin Richter
Moderator

Benutzerprofil
Anmeldungsdatum: 18.04.2006
Beiträge: 13509
Beitrag Martin Richter Moderator 11:58:53 16.05.2007   Titel:              Zitieren

Dann ist ganz klar, dass die Compiler Optionen für diese CPP Dateien nicht stimmen!

Schau Dir crtdefs.h an! Dort werden die Manifeste gesetzt!
Diese werden eingesetzt nur wenn _DLL gesetzt ist, also wenn /MD oder /MDd definiert ist!

Mal eine ganz andere Frage: Hast Du etwa _DLL als Präprozessor-Define selbst gesetzt? Ich habe Deine Projekt-Datei gerade nicht vorliegen, weil diese an meine "private" Adresse gesendet wurde.

Mach mal einen vollen Build und stell mal das Buildlog zur Verfügung!

_________________
Martin Richter (MVP für C++) WWJD http://blog.m-ri.de
"A well-written program is its own heaven; a poorly written program is its own hell!" The Tao of Programming
nep
Autor

Benutzerprofil
Anmeldungsdatum: 20.12.2002
Beiträge: 913
Beitrag nep Autor 12:20:40 16.05.2007   Titel:              Zitieren

Also...
ich selbst habe _DLL jedenfalls nicht gesetzt(zumindest nicht explizit), könnte aber evtl. sein dass da was von nem anderen Projekt benutzt wurde, da bin ich mir jetzt relativ unsicher. Ich hab jetzt jedenfalls einfach mal kurzerhand alle Präprozessor-Konstanten rausgeschmissen, und jetzt wurde das Manifest tatsächlich so nicht mehr gefüllt, und die Abhängigkeiten auf die (MFC)Runtimes sind ebenfalls weg :-) Sehe das auch daran, dass der erzeugte Filter jetzt auch knapp 350 Kb groß ist (davor warens so ca 120 Kb).
Jetzt müsste ich das nur noch irgendwie testen ;) Das blöde ist, dass auf den beiden Test-PCs jetzt schon dieses Redistributable-Package installiert ist, d.h. dass es sowieso auf jeden Fall funktionieren würde. Weißt du ob man das auch wieder irgendwie deinstallieren kann (bzw. wie)?
Wie auch immer.. nochmals vielen Dank :)
Martin Richter
Moderator

Benutzerprofil
Anmeldungsdatum: 18.04.2006
Beiträge: 13509
Beitrag Martin Richter Moderator 13:20:25 16.05.2007   Titel:              Zitieren

Also Fazit: Das Projekt wurde durch falsche und unsinnige defines verbockt. Ich werde mir Deine Projektdatei zu Hause noch mal ansehen.

Du kannst das ganze einfach mit Depends prüfen! Die DLL sollte keine Abhängigkeiten gegen irgendeine CRT DLL haben!

_________________
Martin Richter (MVP für C++) WWJD http://blog.m-ri.de
"A well-written program is its own heaven; a poorly written program is its own hell!" The Tao of Programming
nep
Autor

Benutzerprofil
Anmeldungsdatum: 20.12.2002
Beiträge: 913
Beitrag nep Autor 13:34:40 16.05.2007   Titel:              Zitieren

Ja hatte das schon mit depends geprüft und da waren auch keine Abhängigkeiten mehr, wollte es aber halt trotzdem nochmal so testen ;)

Das mit den Defines kann man wohl so stehen lassen, ja.
C/C++ Forum :: MFC (Visual C++) ::  Sehr spezielles Problem - (DLL + Manifest)   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.