IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

new TTable() provoque exception Kernel32 ! [Base de donnée]


Sujet :

C++Builder

  1. #41
    Membre confirmé

    Inscrit en
    Février 2007
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Février 2007
    Messages : 253
    Par défaut
    Je vous donne donc cela...
    Le projet contient :
    - La DLL qui ne fonctionne pas.
    - L'exécutable qui contient 2 boutons :
    -> 1 Qui charge dynamiquement la DLL et exécute les fonctions
    -> 2 Qui exécute le code de la DLL mais directement dans l'exécutable (la classe est dupliquée dans le code de l'exe)
    -> 3 Compilé via MinGW etCode::blocks qui charge dynamiquement la DLL et exécute les fonctions

    1 & 3 plantent, 2 fonctionne...
    Aller, maintenant je peux aller me pendre...
    Fichiers attachés Fichiers attachés

  2. #42
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 094
    Par défaut
    Citation Envoyé par Feneck91 Voir le message
    Je viens de mettre ma classe dans l'exe... et ça fonctionne !
    Dans l'Exe ! heureusement sinon, tu étais bon pour réinstaller BCB !

    Feneck !

    Repart du début : Exe et DLL construit par Borland !
    Prototype de fonction non JNI, export de fonction comme pour faire une library C normal !

    Expert DLL, C++, cocher VCL (implique multithread), ne pas cocher VC++, ne pas cocher CLX (j'utilise BCB6)
    <ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib vcldb.lib dbrtl.lib bdertl.lib"/>
    lib de BCB6 et BCB5 différente ?

    Le truc ultra BASIQUE !

    Perso, j'ai fait un EXE et DLL en BCB6, j'ai décoché ce qu'il fallait, ajouter les lib (ça je ne savais pas, en XE, j'ai pas eu besoin de ça)

    le code de la DLL (dans \Dev\Essais\CPP\Essai\DLL\DLL_BDE\DLL\DLLBDE.bpr)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    //---------------------------------------------------------------------------
    #include <vcl.h>
    #include <windows.h>
    #pragma hdrstop
    //---------------------------------------------------------------------------
    extern "C" __declspec(dllexport) __stdcall int TestBDE();
    //---------------------------------------------------------------------------
    #pragma argsused
    int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
    {
      return 1;
    }
    //---------------------------------------------------------------------------
    #include <DBTables.hpp>
    //---------------------------------------------------------------------------
    int __stdcall TestBDE()
    {
      char lpFileName[MAX_PATH];
      GetModuleFileName(
        GetModuleHandle(NULL),
        lpFileName,
        MAX_PATH);
     
      int Result = 0;
      try
      {
        TTable *Table1 = new TTable(NULL);
     
        Result = 1;
        Table1->Active = false; // Le composant Table ne doit pas être actif
        Table1->DatabaseName = ExtractFileDir(lpFileName);
        Table1->TableType = ttParadox;
        Table1->TableName = "CustInfo";
     
        // décrit les champs de la table
        Table1->FieldDefs->Clear();
        TFieldDef *pNewDef = Table1->FieldDefs->AddFieldDef();
        pNewDef->Name = "Field1";
        pNewDef->DataType = ftInteger;
        pNewDef->Required = true;
     
        pNewDef = Table1->FieldDefs->AddFieldDef();
        pNewDef->Name = "Field2";
        pNewDef->DataType = ftString;
        pNewDef->Size = 30;
     
        // Décrit ensuite tous les index
        Table1->IndexDefs->Clear();
        /* le 1er index n'a aucun nom car il s'agit d'une clé primaire Paradox */
        Table1->IndexDefs->Add("","Field1", TIndexOptions() <<ixPrimary << ixUnique);
        Table1->IndexDefs->Add("Fld2Index","Field2", TIndexOptions() << ixCaseInsensitive);
     
        // Maintenant que vous avez spécifié votre choix, création de la table
        Table1->CreateTable();
     
        Result = 2;
      }
      catch(Exception *e)
      {
        Result = -1;
      }
      return Result;
    }
    le code appelant (dans \Dev\Essais\CPP\Essai\DLL\DLL_BDE\EXE\DLLBDECaller.bpr)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    //---------------------------------------------------------------------------
    typedef int (__stdcall *lpTestBDEFunc)();
    //---------------------------------------------------------------------------
    void __fastcall TFrmDLLBDECaller::Button1Click(TObject *Sender)
    {
      HINSTANCE hDLL = LoadLibrary(String(ExtractFileDir(ExtractFileDir(Application->ExeName)) + "\\DLL\\DLLBDE.dll").c_str());
      if (hDLL)
      {
        lpTestBDEFunc TestBDE = (lpTestBDEFunc)GetProcAddress(hDLL, "TestBDE");
        if (TestBDE)
          ShowMessage(IntToStr(TestBDE()));
     
        FreeLibrary(hDLL);
      }
    }
    et j'ai bien, CustInfo.DB, CustInfo.PX, CustInfo.XG0 et CustInfo.YG0 dans mon dossier \Dev\Essais\CPP\Essai\DLL\DLL_BDE\EXE\

    refait le Caller en MinGW avec l'appel de TestBDE !
    Une fois stable, ajoute la surcouche JNI ensuite !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #43
    Membre confirmé

    Inscrit en
    Février 2007
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Février 2007
    Messages : 253
    Par défaut
    C'est peut-être un bug C++ Builder 5.
    Tu as examiné mon code et mes projets ? Ils devraient être correctement chargés sous C++ Builder 6 (j'espère au moins que c'est compatible ascendant). De plus mon code ne créé que deux fichiers :
    un fichier DB contenant la base de données.
    un fichier PX contenant les indexes de la base de données.

    Il y a un C++ Builder 6 gratuit à télécharger ? Genre version d'essai ou un truc comme çà ?

  4. #44
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 094
    Par défaut
    Euh, oui, j'ai une Exception "" !
    une question
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iRet = (*lpfProcFctCreateDatabase)(&jn...
    moi je ne mets pas l'étoile
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iRet = lpfProcFctCreateDatabase(&jn...
    Sinon ben, cela ne marche pas non plus !
    Je ne sais pas d'où ça vient, un vrai délire ton histoire !

    Moi, du premier coup ça pense avec un nouveau projet, ton BPR est mort !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #45
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par défaut
    Ben ça marche.... sous BCB2010 & BCB6

    Plus exactement, en recompilant ParadoxWriter.dll et ParadoxWriterTester.exe, les boutons TestDLL et TestEXE me créent bien la table (la DLL est bien chargée, le débugage fonctionne dedans)...

    Ce que j'ai eu à faire:

    - Recréer un projet pour la dll, pour qu'elle utilise la VCL, et dégager la RTL dynamique et les paquets d'exécution. (non, rogntudju de rogntudju, le projet que tu as filé n'utilise pas la VCL, ou alors je ne comprends pas ce que <SYSDEFINES value="NO_STRICT;_NO_VCL"/> fait dans le .bpr !!)
    Pour Builder 6, comme à la liaison il buggait sur TTable, j'ai dû ajouter "bdertl.lib dbrtl.lib vcl.lib" aux sections <LIBRARIES /> et <SPARELIBS /> du bpr

    - Pour l'exe sous BCB2010, dans la fonction Test, modifier un catch pour avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pzerror = AnsiString(_ex.Message).c_str();

  6. #46
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 094
    Par défaut
    Totoche, je te confirme Feneck91 avait décocher la case VCL à la création de la DLL, il l'a dit dans ce message, pourtant on avait répéter qu'il fallait la cocher ...ICI !

    En fait, tour marchait bien, c'est juste que Feneck ne lisait pas nos remarques sur "Repart du début", j'avais pourtant décrit la bonne séquence

    Expert DLL, C++, cocher VCL (implique multithread), ne pas cocher VC++, ne pas cocher CLX (j'utilise BCB6)
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #47
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Totoche, je te confirme Feneck91 avait décocher la case VCL à la création de la DLL, il l'a dit dans ce message, pourtant on avait répéter qu'il fallait la cocher ...ICI !
    Ah ouaih, vraiment, là, comme dirait Hulk, "P'tain chuis vert". Un peu comme si on n'avait pas insisté lourdement là dessus depuis 10h ce matin, donc...


  8. #48
    Membre confirmé

    Inscrit en
    Février 2007
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Février 2007
    Messages : 253
    Par défaut
    Je comprend que vous soyez très en colère...
    Bon... je refais mon projet from scratch.... Je coche utiliser la VCL, pas de style VC, etc...
    Je rajoute mes fichiers et tout et tout...
    Je rajoute les libs qui vont bien...
    Et ... ça plante toujours...
    J'édite mon bpl ... et là oh surprise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <SYSDEFINES value="NO_STRICT;_NO_VCL"/>
    C'est normal ça ?
    Je vais supprimer _NO_VCL et je vous tient au courant.

  9. #49
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 094
    Par défaut
    Tu as ouvert le bon fichier ?
    J'ai aussi tenté de supprimé _NO_VCL de ton BPR, ça ne fut pas concluant
    J'ai donc supprimé l'ancien BPR, et j'en ai créé un autre avec le même nom !
    J'ai bien
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <SYSDEFINES value="NO_STRICT"/>
    Cela serait inquiétant si tu n'y arrives pas, un tel bug, ça serait connu dans BCB5, en même temps utiliser BCB sans VCL, c'est un peu idiot (puisque c'est son principal intérêt), sinon autant prendre un gcc ultra standard
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  10. #50
    Membre confirmé

    Inscrit en
    Février 2007
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Février 2007
    Messages : 253
    Par défaut
    ça ne fonctionne toujours pas...
    J'y comprend rien, j'ai l'impression que Borland C++ Builder fait ce qu'il veut et pas ce qu'on veut faire de lui...
    J'ai créé le projet avec les sources donnés en exemple...
    Le LoadLibrary provoque une erreur :
    Le projet DLLBDECaller.exe a provoqué une classe d'exception d'execution EOutOfRessources avec le message 'Erreur à la création du contexte périphérique fenêtre". processus stroppé. Utilisez Pas-à-pas ou Exécuter pour continuer.

  11. #51
    Membre confirmé

    Inscrit en
    Février 2007
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Février 2007
    Messages : 253
    Par défaut
    J'ai rebooté la machine.
    Rien à faire, la création d'une DLL utilisant VCL met systématiquement _NO_VCL dans le .bpr
    On dirait qu'il retient les anciens choix faient par l'utilisateur. comme par exemple le choix de faire le link dans ../bin ou le choix de décocher tous les paquets, etc... et du coup, il fait peut-être des conneries...
    Je vais le désinstaller puis le réinstaller !
    J'ai accepté cette fois-ci qu'il change le debugger Just in time alors qu'avant j'avais dit non (je l'utilise pour debogger des scripts vbscripts).
    J'ai accepté qu'il installe aussi les CPP... On va voir ce qu'il se passe, trop de problèmes...

  12. #52
    Membre confirmé

    Inscrit en
    Février 2007
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Février 2007
    Messages : 253
    Par défaut
    Après ré-install, reboot, etc...
    J'ai enfin un fichier bpr sans _NO_VLC
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    <?xml version='1.0' encoding='utf-8' ?>
    <!-- C++Builder XML Project -->
    <PROJECT>
      <MACROS>
        <VERSION value="BCB.05.03"/>
        <PROJECT value="ParadoxWriter.dll"/>
        <OBJFILES value="ParadoxWriter.obj"/>
        <RESFILES value=""/>
        <DEFFILE value=""/>
        <RESDEPEN value="$(RESFILES)"/>
        <LIBFILES value=""/>
        <LIBRARIES value=""/>
        <SPARELIBS value=""/>
        <PACKAGES value="Vcl50.bpi Vclx50.bpi bcbsmp50.bpi Qrpt50.bpi Vcldb50.bpi Vclbde50.bpi 
          ibsmp50.bpi vcldbx50.bpi TeeUI50.bpi TeeDB50.bpi Tee50.bpi TeeQR50.bpi 
          VCLIB50.bpi bcbie50.bpi vclie50.bpi Inetdb50.bpi Inet50.bpi NMFast50.bpi 
          dclocx50.bpi bcb2kaxserver50.bpi"/>
        <PATHCPP value=".;"/>
        <PATHPAS value=".;"/>
        <PATHRC value=".;"/>
        <PATHASM value=".;"/>
        <DEBUGLIBPATH value="$(BCB)\lib\debug"/>
        <RELEASELIBPATH value="$(BCB)\lib\release"/>
        <LINKER value="tlink32"/>
        <USERDEFINES value="_DEBUG"/>
        <SYSDEFINES value="NO_STRICT"/>
        <MAINSOURCE value="ParadoxWriter.bpf"/>
        <INCLUDEPATH value="$(BCB)\include;$(BCB)\include\vcl"/>
        <LIBPATH value="$(BCB)\lib\obj;$(BCB)\lib"/>
        <WARNINGS value="-w-par"/>
      </MACROS>
      <OPTIONS>
        <CFLAG1 value="-tWD -tWM -Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v 
          -vi- -c"/>
        <PFLAGS value="-$YD -$W -$O- -v -JPHNE -M"/>
        <RFLAGS value=""/>
        <AFLAGS value="/mx /w2 /zd"/>
        <LFLAGS value="-Tpd -aa -Gi -D&quot;&quot; -x -Gn -v"/>
      </OPTIONS>
      <LINKER>
        <ALLOBJ value="c0d32.obj Memmgr.Lib sysinit.obj $(OBJFILES)"/>
        <ALLRES value="$(RESFILES)"/>
        <ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib"/>
      </LINKER>
      <IDEOPTIONS>
    [Version Info]
    IncludeVerInfo=0
    AutoIncBuild=0
    MajorVer=1
    MinorVer=0
    Release=0
    Build=0
    Debug=0
    PreRelease=0
    Special=0
    Private=0
    DLL=0
    Locale=1036
    CodePage=1252
     
    [Version Info Keys]
    CompanyName=
    FileDescription=
    FileVersion=1.0.0.0
    InternalName=
    LegalCopyright=
    LegalTrademarks=
    OriginalFilename=
    ProductName=
    ProductVersion=1.0.0.0
    Comments=
     
    [Debugging]
    DebugSourceDirs=$(BCB)\source\vcl
     
    [Parameters]
    RunParams=
    HostApplication=
    RemoteHost=
    RemotePath=
    RemoteDebug=0
     
    [Compiler]
    ShowInfoMsgs=0
    LinkDebugVcl=0
    LinkCGLIB=0
     
    [Language]
    ActiveLang=
    ProjectLang=
    RootDir=
      </IDEOPTIONS>
    </PROJECT>
    Il fallait "juste" désinstaller puis ré-installer Borland C++ Builder 5... Je vous tient au courant de mes retour sur tests...

  13. #53
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par défaut
    Hello,

    Tu l'as réinstallé avec le patch ?

  14. #54
    Membre confirmé

    Inscrit en
    Février 2007
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Février 2007
    Messages : 253
    Par défaut
    non, je n'ai jamais installé ce patch...
    Toutefois, cette version fonctionne enfin sans la VCL linké dynamiquement (donc ma dll fait 620 ko) et l'exe qui le lance est un exe Borland.
    Faut que je teste avec MinGW puis je vois à installer ce patch.

  15. #55
    Membre confirmé

    Inscrit en
    Février 2007
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Février 2007
    Messages : 253
    Par défaut
    Et voilà, la boucle est bouclée...
    Le projet MinGW arrive a créer la base de données...
    J'ai pas mal bidouillé les bpr pour comprendre, linker, avec ou sans VCL, avec ou sans les paquets... puis une fois que j'ai emmerdé les developpeurs sympa que vous êtes et que j'ai compris les options qu'il fallait mettre, c'est Borland C++ Builder qui n'en fait qu'a sa tête...
    Toutefois tout n'est pas terminé...
    Il faut que java arrive a créer la base de données puis que j'arrive à faire de même dans un environnement où Borland C++ builder 5 n'est pas installé (voir quelles DLL il faut ajouter (ou pas)...
    C'est incompréhensible...

    pour éviter des crashs, j'ai juste entouré les try catch par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        __try
        {
            // TOUT MON CODE...
        }
        __except(EXCEPTION_EXECUTE_HANDLER)
        {
            m_strLastError.printf("Kernel exception raised! Error code = %X",GetExceptionCode());
        }
    Le seul truc que je n'arrive toujours pas à faire c'est de debugger à l'intérieur de la DLL mais bon, ce n'est pas le plus grave...
    Il faut installer ce patch ? C++Builder 5 Professional Edition Update #1

  16. #56
    Membre confirmé

    Inscrit en
    Février 2007
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Février 2007
    Messages : 253
    Par défaut
    Bon...
    J'ai mis à jour avec le patch.
    J'arrive à appeler la DLL à partir de Java (ce qui me parait normal vu que MinGW arrivait à le faire).
    Pourquoi cela ne fonctionnait pas ? Impossible de comprendre, le code était bon, les options aussi mais... Borland C++ Builder 5 n'en faisait visiblement qu'à sa tête en n'initialisant pas le bpr avec options demandées ... Ce serait vraiment ça le problème ? Bizarre tout de même...
    Bon, j'ai encore une erreur indiquant que la table est occupée mais comme mon code Java n'est pas développé, il se peut que ce soit un peu le Chaos dans les appels...
    Je vous tient au courant et vous dit déjà MERCI POUR VOTRE AIDE ET LE TEMPS QUE VOUS AVEZ PRIS A M'AIDER

  17. #57
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par défaut


    Bonne continuation dans ton projet.

    Au passage, ça m'a permis de voir ce que l'on pouvait faire avec JNI et MinGW d'un côté, et Builder de l'autre

    Curieusement, jni.h était absent de mon install de Builder 2010 Pro, alors qu'il est bien dans celle de Builder 6 et 2007 Entreprise... Une différence entre les versions Pro et Entreprise ?

  18. #58
    Membre confirmé

    Inscrit en
    Février 2007
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Février 2007
    Messages : 253
    Par défaut
    jni.h n'est pas présent, il est présent dans le JDK de java, il faut donc ajouter les chemins pour qu'il retrouve les headers dans le code fourni par le JDK.
    Au passage, je n'ai pas réussi àjouter les lib avec l'IDE, pour ajouter des lib, je dois à chaque fois fermer Borland C++ Builder puis modifier le fichier bpr puis relancer Borland C++ Builder, c'est un peu la misère...

  19. #59
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par défaut
    Au passage, je n'ai pas réussi àjouter les lib avec l'IDE, pour ajouter des lib, je dois à chaque fois fermer Borland C++ Builder puis modifier le fichier bpr puis relancer Borland C++ Builder, c'est un peu la misère...
    Tu n'as pas une option "Tout fermer" dans BCB5 ? Avec ça plus "Réouvrir", tu dois normalement éviter le redémarrage de Builder.

    Une astuce, c'est de rajouter une fiche avec un TTable à ton projet. Tu sauvegardes, et Builder normalement ajoute ce qu'il faut à ton .bpr. Ensuite tu peux retirer la fiche du projet, les librairies déclarées vont rester dans le .bpr.

  20. #60
    Membre confirmé

    Inscrit en
    Février 2007
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Février 2007
    Messages : 253
    Par défaut
    Oui, en gros ce n'est pas comme dans Visual C++ ou Code::Blocks où tu peux éditer ton projet via l'IHM et ajouter les libs et options que tu veux. là il y a quelques options mais pas tout... Il y a les chemins où aller chercher les libs et les headers mais pas quels lib on ajoute... bizarre.

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 4 PremièrePremière 1234 DernièreDernière

Discussions similaires

  1. probleme : throw new Exception
    Par anto48_4 dans le forum Langage
    Réponses: 8
    Dernier message: 20/12/2010, 08h24
  2. Composite id provoque exception
    Par Reno17 dans le forum Hibernate
    Réponses: 0
    Dernier message: 18/03/2010, 15h39
  3. Réponses: 5
    Dernier message: 25/08/2008, 10h03
  4. New et ses exceptions
    Par TNT89 dans le forum C++
    Réponses: 7
    Dernier message: 04/11/2007, 18h39
  5. msaccess a provoqué une erreur dans KERNEL32.dll
    Par massol joel dans le forum Access
    Réponses: 12
    Dernier message: 03/04/2006, 14h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo