已答复 C/C++ - ManagedClass - DLL und C#-App

  • Montag, 1. August 2011 21:59
     
     

    Hi,

    aus fremden C/C++ - code (sehr komplexe Daten lieferung) habe eine dll, die ich mittels mfc- App benütze um die Daten zu Bearbeiten und anzuzeigen.

    Da diese mfc-app nachteile hat, und viel mit c# - usercontrol arbeitet, Versuche ich jetzt das ganze

    mit einer C#-App zu realisieren, muss aber fremden C/C++ code weiter verwenden.

    Hierzu habe eine  ManagedClass - DLL, mit CLR Support (/clr), erstellt, wo fremder code als

    UnMangedClass-en sind.
    Mit einer C#-TestApp wo ich mit paar trivialen klassen getestet habe, kann ich ins unmanaged class-en rein debugen, und ...es läuft.

    Wenn ich aber alles in die Dll reinpacke (über 100 klassen), Compiler und Linker ohne Fehler, und App starte:

    bekomme ich gleich beim:     Application.Run(new myapp())
    eine Assertion:
    File: ...\vctools\crt_bld\self_x86\crt\src\fgets.c
    Line; 57
    Expression (str!=NULL) ????????????????


    Warum, wer kent das und wie kann man das lösen?
    Hoffe, ich habe mich kurz und klar verständlich gemacht.

    Danke
    Ljuba

Alle Antworten

  • Dienstag, 2. August 2011 06:03
    Moderator
     
     Beantwortet Enthält Code

    eine Assertion:
    File: ...\vctools\crt_bld\self_x86\crt\src\fgets.c
    Line; 57

    Expression (str!=NULL) 

    Schau Dir den Sourcecode an.
    Der FILE* den Du an fgets übergibst ist NULL.
    Vermutlich hast Du keinen Test beim fopen gemacht wenn dieser fehlschlägt.


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de

  • Dienstag, 2. August 2011 09:35
     
     

    Hallo Martin,

    das habe ich schon gesucht und fand nichts. Ich muss weiter suchen in dem ich klassen mit fopen untersuche.

    Die ganze, o.g. Verzeichnis struktur, finde ich in meinem rechner nicht.

     

    Gruss

    Ljuba

  • Dienstag, 2. August 2011 09:43
    Moderator
     
     Beantwortet

    > Die ganze, o.g. Verzeichnis struktur, finde ich in meinem rechner nicht.

    Die CRT Sourcen befinden sich bei mir in:
    C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\crt\src

    Der Pfad der angezeigt wird ist der Build Pfad in dem die CRT von MS erzeugt wurden.


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
  • Dienstag, 2. August 2011 11:18
     
     

    Danke Martin.

    Ich habe inzwischen den Fehler gefunden, selbst bein gestellt.

    Gruss

    Ljuba

    PS: CRT Sourcen sind auch bei mir an der gleiche stelle.:)