none
Migration C++ 6.0 vers C++ Net RRS feed

  • Question

  • Bonjour,

    j'ai une application console c++ 6.0 win32 et qui utilise une librairie Fortran. j'ai ouvert cette application dans VS 2010 dans le but de passe en mode mixte (Common Language Runtime Support (/clr)). la finalité est de pouvoir ajouté un projet C++ .Net à la solution.

    une fois que j'ai réglé les problèmes du LINK, je compile bien mon projet, VS génére l'EXE, mais à l'exécution j'ai un crash avec une erreur 255 (runtime error) et les messages suivants  (fenêtre output de VS 2010)

    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\ntdll.dll', Cannot find or open the PDB file
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\kernel32.dll', Cannot find or open the PDB file
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\KernelBase.dll', Cannot find or open the PDB file
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\user32.dll', Cannot find or open the PDB file
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\gdi32.dll', Cannot find or open the PDB file
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\lpk.dll', Cannot find or open the PDB file
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\usp10.dll', Cannot find or open the PDB file
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\msvcrt.dll', Cannot find or open the PDB file
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\advapi32.dll', Cannot find or open the PDB file
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\sechost.dll', Cannot find or open the PDB file
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\rpcrt4.dll', Cannot find or open the PDB file
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\sspicli.dll', Cannot find or open the PDB file
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\cryptbase.dll', Cannot find or open the PDB file
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\odbc32.dll', Cannot find or open the PDB file
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\imm32.dll', Cannot find or open the PDB file
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\msctf.dll', Cannot find or open the PDB file
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\odbcint.dll', Binary was not built with debug information.
    'PilSvMen.exe': Loaded 'C:\Program Files\CheckPoint\ZAForceField\WOW64\Plugins\ISWSHEX.dll', Cannot find or open the PDB file
    'PilSvMen.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4940_none_d08cc06a442b34fc\msvcr80.dll', Cannot find or open the PDB file
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\wintrust.dll', Cannot find or open the PDB file
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\crypt32.dll', Cannot find or open the PDB file
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\msasn1.dll', Cannot find or open the PDB file
    'PilSvMen.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4940_none_d08cc06a442b34fc\msvcp80.dll', Cannot find or open the PDB file
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\ole32.dll', Cannot find or open the PDB file
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\ntmarta.dll', Cannot find or open the PDB file
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\Wldap32.dll', Cannot find or open the PDB file
    The program '[8840] PilSvMen.exe: Native' has exited with code 255 (0xff).
    


    Cordialement

    jeudi 16 février 2012 16:16

Réponses

  • Sous quel systeme d'exploitation compilez-vous ? Windows 7 64 bits ?

    Quel version de fortran utilisez-vous ?

    Quelles DLL FORTRAN avez-vous ajouter à votre projet ? Les anciennes datant de Visual 6 ... Si tel est la cas, il faut les actualiser ? 


    Delphine GARRO

    vendredi 17 février 2012 10:27
  • Avez-vous la possibilité de compiler votre logiciel , en supprimant tout utilisation au fortran ?

    Je pense que simplement vos DLL Fortran 97 ne sont pas compatibles avec le compilateur VS2010: et que c'est le chargement de ces DLL qui plante votre logiciel lorsque vous tentez de le lancer... N'avez-vous pas tenter d'utiliser des librairies FORTRAN plus récentes ?

    Avez-vous tenter d'executer votre logiciel avec options: clique droit sur votre executable -> propriétés -> Compatibilité

    MODE compatibilité:  XP (Service Pack 3) ?


    Delphine GARRO


    vendredi 17 février 2012 15:02
  • Bonjour,

    J'ai finalement trouvé ce qui merde. Comme vous l'avez montionné plus haut, c'est mon FORTRAN qui n'est pas compatible.

    J'ai viré tous les appels au FORTRAN, est mon EXE marche.

    Ma LIB FORTRAN utilise dfor.lib, or pour être compatible avec ma configuration la LIB FORTRAN doit utiliser dfordll.lib. Avez vous une idée comment faire en sorte que la compilation lde ma Librairie Fortran utilise dfordll.lib plutôt que dfor.lib?


    Cordialement

    mardi 21 février 2012 09:44
  • Dans les propriétés de votre projet, option PROPRIETES DE CONFIGURATION puis EDITEUR DE LIENS puis ENTREE, dans la ligne dépendance supplémentaire, il doit y figurer votre ancienne librairie : dfor.lib . Remplacez la simplement par dfordll.lib puis cliquer sur APPLIQUER... à vous de jouer ...

    Avez-vous également récuper la DLL Fortran (Dfordll.dll) associée à cette nouvelle librairie dfordll.lib ?


    Delphine GARRO


    mardi 21 février 2012 11:13

Toutes les réponses

  • Les messages "cannot find PDB" indiquent simplement que les
    informations de débogage ne sont pas disponibles pour les DLL
    mentionnées, ce qui est normal. Il n'y a aucune information ici
    permettant de diagnostiquer quelque chose.
     
    Il faut deboguer le logiciel avec le debogueur de Visual Studio...
     
    jeudi 16 février 2012 16:57
    Auteur de réponse
  • je pens qu'il y a des chose à changer dans la config.

    j'ai ajouté une manip que j'ai trouvé à cette url "http://msdn.microsoft.com/en-us/library/b8ttk8zy%28vs.71%29.aspx". project properties -> debegging -> symbols. est j'ai d'autres erreurs

    'PilSvMen.exe': Loaded 'E:\Pnp\serveur\PilsvMen\Debug\PilSvMen.exe', Symbols loaded.
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\ntdll.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\kernel32.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\KernelBase.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\user32.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\gdi32.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\lpk.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\usp10.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\msvcrt.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\advapi32.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\sechost.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\rpcrt4.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\sspicli.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\cryptbase.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\odbc32.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\imm32.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\msctf.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\odbcint.dll', Binary was not built with debug information.
    

    je ne voie poas comment le débuger puisque l'appli de ferme instantanement. ou alors je ne sais pas faire.

    quelques config:

    CV++ Directories -> Library directories :

                            $(VCInstallDir)lib
                            $(VCInstallDir)atlmfc\lib
                            $(WindowsSdkDir)lib
                            $(FrameworkSDKDir)\lib

    C/C++ -> Code generation -> runtime library = multi thread debug (/Mtd)

    C/C++ -> Advenced -> calling convention = __stacall(/Gz)

    Linker -> Command Line 

    /OUT:".\Debug/PilSvMen.exe" /INCREMENTAL /NOLOGO /LIBPATH:"E:\Pnp\serveur\Statlib\Debug" "E:\Pnp\serveur\Statlib\Debug\statlib.lib" 
    "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib"
     "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" 
    /NODEFAULTLIB:"libc.lib" /MANIFEST /ManifestFile:".\Debug\PilSvMen.exe.intermediate.manifest" 
    /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" 
    /DEBUG /PDB:".\Debug/PilSvMen.pdb" /SUBSYSTEM:CONSOLE /PGD:"E:\Pnp\serveur\PilsvMen\Debug\PilSvMen.pgd" /TLBID:1 
    /DYNAMICBASE:NO /MACHINE:X86 /ERRORREPORT:QUEUE 


    Cordialement

    jeudi 16 février 2012 17:17
  • >je ne voie poas comment le debuger puisque l'appli de ferme instantanement.

    Que se passe-t'il en lançant le debogueur avec F10 (trace) ? Ou en mettant un point d'arrêt sur la première ligne du programme ?

    Peut-être que le problème est dû à l'utilisation de librairies qui peuvent poser problème ? Pourquoi est-ce que la librairie C standard libc.lib n'est pas utilisée (option /NODEFAULTLIB:libc.lib) ?

    jeudi 16 février 2012 17:51
    Auteur de réponse
  • j'ai déjà mis un point d'arrêt dans la première ligne, j'ai même utilisé F11 mais le résultat est le même, l'application ne s'exécute qu'un court moment. le main n'est pas encore exécuté.

    pour la libc.lib : elle est remplacé par libcmt.lib dans VS2010, c'est pourquoi il faut l'exclure.


    Cordialement

    vendredi 17 février 2012 08:21
  • Etes-vous sûr d'avoir donné toutes les lignes ou, tout du moins, les dernières lignes de la fenêtre "Output/Sortie" de VS ?

    Si c'est vraiment le cas, c'est très étonnant pour une version Debug.

    Si, c'est en Release, avez-vous le même comportement en Debug ?

    Si ce n'est qu'en Release, vous pouvez toujours utiliser des débuggeur type WinDbg qui fabrique des Dumps.


    Paul Bacelar, Ex - MVP VC++

    vendredi 17 février 2012 09:51
    Modérateur
  • Sous quel systeme d'exploitation compilez-vous ? Windows 7 64 bits ?

    Quel version de fortran utilisez-vous ?

    Quelles DLL FORTRAN avez-vous ajouter à votre projet ? Les anciennes datant de Visual 6 ... Si tel est la cas, il faut les actualiser ? 


    Delphine GARRO

    vendredi 17 février 2012 10:27
  • j'ai un Win7 64bit, VS2010 pro

    Fortran 97 Entreprise (celles utilisées pour VC++ 6.0). j'ai ajouté toutes les librairies de base Frotran dans "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib"

    j'ai affiché le détail du Link dans OUTPUT, le LINK avec la librairie Fortran passe bien (d'après le output.) maintenant comment être sur? pour actualiser ces librairies, je n'est pas le moyen de le faire pour l'instant, ma boite n'a pas de licence Fortran plus recent.

    output debug win32

    'PilSvMen.exe': Loaded 'E:\PLANIPE\PilsvMen\Debug\PilSvMen.exe', Symbols loaded.
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\ntdll.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\kernel32.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\KernelBase.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\odbc32.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\msvcrt.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\advapi32.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\sechost.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\rpcrt4.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\sspicli.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\cryptbase.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\user32.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\gdi32.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\lpk.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\usp10.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\imm32.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\msctf.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\odbcint.dll', Binary was not built with debug information.
    'PilSvMen.exe': Loaded 'C:\Program Files\CheckPoint\ZAForceField\WOW64\Plugins\ISWSHEX.dll', Cannot find or open the PDB file
    'PilSvMen.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4940_none_d08cc06a442b34fc\msvcr80.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\wintrust.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\crypt32.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\msasn1.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4940_none_d08cc06a442b34fc\msvcp80.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\ole32.dll', Symbols loaded.
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\ntmarta.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\Wldap32.dll', Symbols loaded (source information stripped).
    The program '[6836] PilSvMen.exe: Native' has exited with code 255 (0xff).
    

    en realise j'ai des erreurs au Link, mais pour l'instant, je me concentre sur le debug dans un premier temps.

    Error    1343    error LNK2001: unresolved external symbol @__security_check_cookie@4    E:\PLANIPE\PilsvMen\VerParam.obj    PilSvMen
    Error    1648    error LNK2001: unresolved external symbol ___CxxFrameHandler3    E:\PLANIPE\PilsvMen\Classe_STR_VEC3.obj    PilSvMen
    Error    1730    error LNK2001: unresolved external symbol ___iob_func    E:\PLANIPE\PilsvMen\Gesbpp.obj    PilSvMen
    Error    1319    error LNK2001: unresolved external symbol ___security_cookie    E:\PLANIPE\PilsvMen\Creabase.obj    PilSvMen
    Error    1955    error LNK2001: unresolved external symbol __CIatan    E:\PLANIPE\PilsvMen\dfor.lib(intrini.obj)    PilSvMen

    Merci d'avance pour votre aide, parce que je bloque depuis une journée.


    Cordialement

    vendredi 17 février 2012 11:19
  • Je comprend plus trop, C'est une erreur à l'exécution ou au link ?

    Si c'est une erreur au link, il y a un peu de mélange dans les C-Runtime:

    http://support.microsoft.com/kb/894573


    Paul Bacelar, Ex - MVP VC++

    vendredi 17 février 2012 12:02
    Modérateur
  • j'ai dis :

    En DEBUG, je n'ai pas de problème au LINK (, je compile et je genere l'EXE, seulement je n'arrive pas à lancer l'EXE il se termine instantnément avec l'erreur 255 et le OUTPUT de VS2010 que j'ai citer plus haut (ce qui est encadré). j'ai placé un point d'arrêt à la première ligne de code dans le main, je n'arrive jamais à ce point.

    Pour les erreurs au LINK que j'ai posté, elles proviennent de la compilation en REALISE, c'était juste pour répondre à votre question. Mais je disais , je me concentre seulement sur la varsion DEBUG dans un premier temps.


    Cordialement

    vendredi 17 février 2012 12:37
  • j'ai réglé mes problèmes de LINK en REALISE, j'ai exactement la même sortie (fenêtre OUTPUT) que dans version DEBUG, C.A.D : l'EXE qui creash avec le code 255.

    'PilSvMen.exe': Loaded 'E:\PLANIPE\PilsvMen\Realise\PilSvMen.exe', Symbols loaded.
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\ntdll.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\kernel32.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\KernelBase.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\odbc32.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\msvcrt.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\advapi32.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\sechost.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\rpcrt4.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\sspicli.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\cryptbase.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\user32.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\gdi32.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\lpk.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\usp10.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\imm32.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\msctf.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\odbcint.dll', Binary was not built with debug information.
    'PilSvMen.exe': Loaded 'C:\Program Files\CheckPoint\ZAForceField\WOW64\Plugins\ISWSHEX.dll', Cannot find or open the PDB file
    'PilSvMen.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4940_none_d08cc06a442b34fc\msvcr80.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\wintrust.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\crypt32.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\msasn1.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4940_none_d08cc06a442b34fc\msvcp80.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\ole32.dll', Symbols loaded.
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\ntmarta.dll', Symbols loaded (source information stripped).
    'PilSvMen.exe': Loaded 'C:\Windows\SysWOW64\Wldap32.dll', Symbols loaded (source information stripped).
    The program '[2168] PilSvMen.exe: Native' has exited with code 255 (0xff).
    


    Cordialement

    vendredi 17 février 2012 12:59
  • Ok, c'est plus clair maintenant.

    Mais, votre programme crash ou retourne un code d'erreur 255 ?
    Ce n'est pas du tout la même chose.

    S'il y a crash, le débuggeur devrait prendre la main.

    Si c'est un code retour, le main devrait être appelé, à moins d'utilisation de librairie pas très orthodoxe.


    Paul Bacelar, Ex - MVP VC++

    vendredi 17 février 2012 13:17
    Modérateur
  • j'ai un peu fouillé autour du CODE 255, j'ai trouvé

    if (__native_startup_state == __initializing)
                {
                    _amsg_exit( _RT_CRT_INIT_CONFLICT);
                }
                else if (__native_startup_state == __uninitialized)
                {
                    __native_startup_state = __initializing;
    #ifndef _SYSCRT
                    if (_initterm_e( __xi_a, __xi_z ) != 0)
                    {
                        return 255;
                    }
    #else  /* _SYSCRT */
                    _initterm((_PVFV *)(void *)__xi_a, (_PVFV *)(void *)__xi_z);
    #endif  /* _SYSCRT */
                }
                else
                {
                    has_cctor = 1;
                }
    dans le fichier "crtexe.c" dans "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\crt\src"


    Cordialement


    • Modifié IghzerA vendredi 17 février 2012 13:25
    vendredi 17 février 2012 13:22
  • Quand je dis crash, veux dire se términe (la fenêtre console de mon appli apparait est se ferme sans affichée quoi que ce soit).

    Le code retour est celui affiché dans OUTPUT de VS2010.

    Quand j'exécute mon appli via line de commande (windows ou celle de VS2010) j'ai un message "runtime error"


    Cordialement

    vendredi 17 février 2012 13:36
  • Avez-vous la possibilité de compiler votre logiciel , en supprimant tout utilisation au fortran ?

    Je pense que simplement vos DLL Fortran 97 ne sont pas compatibles avec le compilateur VS2010: et que c'est le chargement de ces DLL qui plante votre logiciel lorsque vous tentez de le lancer... N'avez-vous pas tenter d'utiliser des librairies FORTRAN plus récentes ?

    Avez-vous tenter d'executer votre logiciel avec options: clique droit sur votre executable -> propriétés -> Compatibilité

    MODE compatibilité:  XP (Service Pack 3) ?


    Delphine GARRO


    vendredi 17 février 2012 15:02
  • Pour supprimer les appels au FORTRAN sa reviens à refaire la moitié de l'application. pourtant VS2010 lors de la compilation affiche en OUTPUT qu'il arrive à bien faire les liens avec les librairie est les fichiers .obj du FORTRAN.

    je ne dispose pas de librairie FORTRAN plus récentes (mon entreprise n'a pas de licence FORTRAN plus récente )

    j'ai testé le MODE COMPATIBILITE  XP (Service Pack 3), malheuresement j'ai le même comportement.

    J'avoue que je ne sais plus quoi faire.


    Cordialement

    vendredi 17 février 2012 15:29
  • S'il y a incompatibilité, elle est indirecte car le linker a accepté de linker.

    Il y a un problème des les structures hébergées dans la C-Runtime.

    Cela peut venir d'un mélange de C-Runtime, genre une statique et une autre dynamique dans les sources de l'exécutable ou des lib statiques utilisées.

    Le plus simple est de mettre un point d'arrêt avant ou sur la ligne "if (_initterm_e( __xi_a, __xi_z ) != 0)"

    Puis vous suivez pas à pas le processus pour connaître précisément le problème dans la C-Runtime.


    Paul Bacelar, Ex - MVP VC++

    vendredi 17 février 2012 15:39
    Modérateur
  • je ne peux pas poser un point d'arrêt sur cette ligne de code, car le bout de code que j'ai posté proviens du fichier "crtexe.c" interne à VS2010 (RUN-TIME Library)

    le chemin de ce fichier est : "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\crt\src"


    Cordialement

    vendredi 17 février 2012 16:08
  • Vous avez, semble-t-il, une connaissance très approximative du fonctionnement d’un débuggeur et de VS.

    >"crtexe.c" interne à VS2010
    Pas du tout, ce fichier n’est que le code source qui à servi à générer le C-Runtime. Il n’a aucun lien avec VS.
    La C-Runtime ne fait pas partie de VS mais de l’OS (en mode Dll).
    Il est aussi fourni avec le Plateform SDK qui n’a pas de lien avec VS.
    Il faut même utiliser cette version en priori car elle est bien plus à jour que la version dans VS.

    Pour pouvoir mettre un point d’arrêt dur du code, il suffit de disposer des fichiers PDB ou DBG ou SYM avec les « sources informations ».

    C’est avec ces informations que le débuggeur est capable, au démarrage du programme à debugger, de calculer l’adresse du point d’arrêt dans l’espace d’adressage de l’exécutable et de configurer les registres spéciaux du processeur pour prendre la main au bon moment.

    Il suffit donc d’avoir pour l’exécutable et les dll, les PDB correspondant et de données le bon chemin vers les sources quant le débuggeur le demande.

    Si vous n’arrivez pas à mettre un point d’arrêt en mode Debug (et une C-Runtime en Debug) sur cette ligne, c’est que vous avez un problème de configuration dans votre VS.

    Les traces que vous postez montrent que c’est un peu le bordel, la gestion de la C-Runtime dans votre projet.
    Elle change à chaque fois, normale si vous changer la configuration de votre projet à l’aveuglette.
    Il faut choisir la bonne version en fonction des contraintes des bibliothèques statiques utilisées.


    Paul Bacelar, Ex - MVP VC++

    vendredi 17 février 2012 18:45
    Modérateur
  • Bonjour,

    Je n'ai pas vraiment tout compris. Il me semble bien que je n'ai pas la bonne config de VS.

    je join ma config


    Cordialement

    lundi 20 février 2012 09:43
  • Vous n'avez pas tout compris, c'est normal, car en me relisant je peux dire que j'étais bien fatigué. :-(

    On va essayer de se remettre sur de bons rails. En Debug, vous ne devriez utiliser que des librairies et Dll en Debug.

    Il faut que vous maitrisez l'arborescence des dépendances de dll statiquement liées à votre exécutable.

    Dependency Walker (http://www.dependencywalker.com/) vous indiquera qui monte la C-Runtime de Release.

    Avec cette info, vous devrez modifier votre projet pour ne plus avoir que la version Débug de la C-Runtime.

    Une fois ces modifications faites, vos points d'arrêt dans "crtexe.c" devraient être opérationnel.


    Paul Bacelar, Ex - MVP VC++

    lundi 20 février 2012 13:26
    Modérateur
  • j'ai éffectué un diag avec Denpendency Walker, il me signale daus DLL manquantes dont j'ai vérifié l'existance dans les chemins respectifs

    gpsvc.dll
    c:\windows\system32
    C:\Windows\sysWOW64\fr-FR

    ieshims.dll
    C:\Program Files (x86)\Internet Explorer
    C:\Programmes\Internet Explorer

    j'ai aussi fais un scanne avec sfc.exe /scannnow -> résultat :  aucune anomalie sur mon systèm.

    En suite:

    J'ai copié la gpsvc.dll du répertoire system32 dans le dossier Debug de mon Appli, je relance Dependency Walker. suprise, il me la signale en 64bit (Error: Modules with different CPU types were found.)


    Cordialement


    • Modifié IghzerA lundi 20 février 2012 15:26
    lundi 20 février 2012 15:00
  • Ne vous dispersez pas, utilisez  Denpendency Walker pour voir qui utilise la C-runtime en Release et qui ne devrait pas.

    Ces 2 Dll ne sont pas chargées selon les traces que vous nous avez communiquées. (delay loading de dll vraisemblablement)


    Paul Bacelar, Ex - MVP VC++

    lundi 20 février 2012 15:29
    Modérateur
  • Bonjour,

    J'ai finalement trouvé ce qui merde. Comme vous l'avez montionné plus haut, c'est mon FORTRAN qui n'est pas compatible.

    J'ai viré tous les appels au FORTRAN, est mon EXE marche.

    Ma LIB FORTRAN utilise dfor.lib, or pour être compatible avec ma configuration la LIB FORTRAN doit utiliser dfordll.lib. Avez vous une idée comment faire en sorte que la compilation lde ma Librairie Fortran utilise dfordll.lib plutôt que dfor.lib?


    Cordialement

    mardi 21 février 2012 09:44
  • Dans les propriétés de votre projet, option PROPRIETES DE CONFIGURATION puis EDITEUR DE LIENS puis ENTREE, dans la ligne dépendance supplémentaire, il doit y figurer votre ancienne librairie : dfor.lib . Remplacez la simplement par dfordll.lib puis cliquer sur APPLIQUER... à vous de jouer ...

    Avez-vous également récuper la DLL Fortran (Dfordll.dll) associée à cette nouvelle librairie dfordll.lib ?


    Delphine GARRO


    mardi 21 février 2012 11:13
  • Merci beaucoup pour votre aide.

    je n'ai pas encore régler tous les problèmes de compatibilités entre Fortran et C++, mais je suis sur la bonne voie.


    Cordialement

    • Marqué comme réponse IghzerA mercredi 22 février 2012 13:26
    • Non marqué comme réponse GARRO Delphine mercredi 22 février 2012 15:28
    mardi 21 février 2012 13:32