MFC und CLR



  • Hm, dieser Thread wirft einige Fragen bei mir auf, vielleicht könnt ihr diese beantworten..

    Angenommen ich habe ein MFC Programm welches eine C++/CLR DLL in .NET 2.x als Plugin verwendet und später ein neues Plugin mit CLR Unterstützung hinzukommt, welches z.B. in 3.x entwickelt wurde, läuft nur die DLL die zuerst geladen wird?
    Wenn zuerst die 3.x geladen wird, läuft dann noch die 2.x wegen der Abwärtskompatibilität?

    Um dem Problem zu entgehen, könnte man ja in der Hauptanwendung ebenfalls die CLR einbinden um z.B. 2.x zu erwzingen, aber wie verhält sich dann die Anwendung, wenn ein 3.x Plugin geladen werden sollte?

    Vielen Dank für eure Antworten!

    Frank



  • CLR+CPLUS schrieb:

    Angenommen ich habe ein MFC Programm welches eine C++/CLR DLL in .NET 2.x als Plugin verwendet und später ein neues Plugin mit CLR Unterstützung hinzukommt, welches z.B. in 3.x entwickelt wurde, läuft nur die DLL die zuerst geladen wird?

    Naja... Es gibt bisher nur die Versionen 1.0, 1.1 und 2.0. Es gibt keine 3.0 oder 3.5! Aus diesem Grunde stellt sich die Frage hier so nicht.

    Machen wir das Beispiel eher mit "v1.1 wird geladen und dann möchte eine DLL v2". Das geht nicht.

    Dies ist wie gesagt der Grund, warum man Shell-Extensions (also Explorer-Extensions) *nur* in native-Code schreiben darf!

    CLR+CPLUS schrieb:

    Wenn zuerst die 3.x geladen wird, läuft dann noch die 2.x wegen der Abwärtskompatibilität?

    Naja, es gibt ein paar Dinge die nicht laufen; Es ist eben nicht 100% kompatibel. (v3 lädt v2.0sp1).

    CLR+CPLUS schrieb:

    Um dem Problem zu entgehen, könnte man ja in der Hauptanwendung ebenfalls die CLR einbinden um z.B. 2.x zu erwzingen, aber wie verhält sich dann die Anwendung, wenn ein 3.x Plugin geladen werden sollte?

    Wie gesagt, was Du machst ist falsch. Aber in ferner Zukunft soll es möglich sein mehrere CLRs in einem Prozess zu laden.



  • Jochen Kalmbach schrieb:

    - erstelle Deine Anwendung als C++/CLI, dann kannst Du direkt die CLR Sachen verwenden.

    gibt es für den fall kleine Beispiele 😕


  • Mod

    CLR schrieb:

    Jochen Kalmbach schrieb:

    - erstelle Deine Anwendung als C++/CLI, dann kannst Du direkt die CLR Sachen verwenden.

    gibt es für den fall kleine Beispiele 😕

    Verstehe ich nicht... Du kannst doch mit dem Wizard eine eigene C++/CLI Anwendung erzeugen. Dann hast Du ein Beispiel.

    Für was willst Du den genau ein Beispiel?



  • CLR schrieb:

    Jochen Kalmbach schrieb:

    - erstelle Deine Anwendung als C++/CLI, dann kannst Du direkt die CLR Sachen verwenden.

    gibt es für den fall kleine Beispiele 😕

    Dazu brauchst Du ein Beispiel. Du musst einfach in den projekteinstellungen unter "Common Language Runtime Support" den Schalter auf "/clr" einstellen. Dann kannst Du C#-Assemblies (DLLs) einbinden und verwenden. Da braucht man kein grosses Beispiel dafür... einfach machen. Fertig.



  • Schon klar, nicht das habe ich aber gedacht. 🙄

    Ein Beispiel wie ich ein C++/CLI Projekt in ein MFC Projekt ohne \clr Unterstützung einbinde und am besten noch der umgekehrte weg


  • Mod



  • Könnte man die Forensoftware nicht einmal so anpassen, dass Links mit runden Klammern vollständig angezeigt werden?


  • Mod

    sri schrieb:

    Könnte man die Forensoftware nicht einmal so anpassen, dass Links mit runden Klammern vollständig angezeigt werden?

    OT: 100% ACK! Manchmal editiere ich die Links, weil dieser Wert in Klammern nicht nötig ist, aber oft genug bin ich zu faul.



  • Martin Richter schrieb:

    Und besonders dieses?
    http://msdn2.microsoft.com/en-us/library/ms239720(VS.80).aspx

    leider läßt sich das Beispiel nicht erstellen 😮

    Ausgabe

    1>------ Erstellen übersprungen: Projekt: WinFormUserControl1 ------
    1> 
    2>------ Erstellen übersprungen: Projekt: WinFormUserControlView1 ------
    2> 
    3>------ Erstellen übersprungen: Projekt: EXTDLL2 ------
    3> 
    4>------ Erstellen übersprungen: Projekt: EXTDLL1 ------
    4> 
    5>------ Erstellen übersprungen: Projekt: EXTDLL3 ------
    5> 
    6>------ Erstellen übersprungen: Projekt: MFC04 ------
    6> 
    ========== Build: 0 erfolgreich oder aktuell, Fehler bei 0, 6 übersprungen ==========
    


  • Gibt es im netz noch Beispiele die sich auch erstellen lassen??



  • CLR schrieb:

    leider läßt sich das Beispiel nicht erstellen 😮

    ist zwar schon länger her aber:

    doch das geht! schau mal im menü erstellen->konfigurationsmanager

    bei mir war "Itanium" voreingestellt. Stell mal um auf "Win32".



  • Du musst in die Konfigurations-Einstellungen und die Projekt auswählen, welche gebuilded werden sollen!



  • es waren alle projekte ausgewählt. erst mit dem umstellen von "Itanium" auf "Win32" fing VS an die projekte zu berücksichtigen...

    mir ist nur etwas schleierhaft, wieso die programmierer eine Itanium projektmappenplattform nutzten, oder sie zumindest so benannt haben. Itanium war doch eine prozessorreihe von Intel und HP alternativ zu den x86 CPUs.


Anmelden zum Antworten