Discussion générale isc refusée au link

  • mardi 15 mai 2012 17:48
     
      A du code
    Pour attaquer les primitives sql, j'ai des requètes a des primitive isc_xxx qui sortent des warning à la compilation mais au link ils sortent en erreur. une piste pour traiter ce problème serait sympa

    Jean Noël Martin

Toutes les réponses

  • lundi 21 mai 2012 11:44
    Modérateur
     
     

    Avec les messages des warning et des erreurs, ça serait bien plus simple.


    Paul Bacelar, Ex - MVP VC++

  • lundi 21 mai 2012 19:48
     
      A du code

    mais les warning me disent que les isc sont obsolètes

    InterbaseManager.obj : error LNK2028: jeton non résolu (0A000045) "extern "C" void __stdcall isc_sql_interprete(short,char *,short)" (?isc_sql_interprete@@$$J212YGXFPADF@Z) référencé dans la fonction "public: unsigned __int64 __clrcall CInterbaseManager::DeleteDatabase(class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >)" (?DeleteDatabase@CInterbaseManager@@$$FQAM_KV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@Z)

    je vous met un des messages d'erreur pour avoir votre avis

    et les warning sont:

     InterbaseManager.cpp
    1>..\..\..\..\DBMS\DBMSManager\src\InterbaseManager.cpp(237): warning C4996: 'isc_interprete': a été déclaré déconseillé
    1>          d:\usr\memoria\dev\dbms\dbmsmanager\com\ibase.h(682) : voir la déclaration de 'isc_interprete'
    1>..\..\..\..\DBMS\DBMSManager\src\InterbaseManager.cpp(242): warning C4996: 'isc_interprete': a été déclaré déconseillé
    1>          d:\usr\memoria\dev\dbms\dbmsmanager\com\ibase.h(682) : voir la déclaration de 'isc_interprete'
    1>..\..\..\..\DBMS\DBMSManager\src\InterbaseManager.cpp(519): warning C4244: 'argument' : conversion de 'long' en 'short', perte possible de données
    1>..\..\..\..\DBMS\DBMSManager\src\InterbaseManager.cpp(521): warning C4996: 'isc_interprete': a été déclaré déconseillé
    1>          d:\usr\memoria\dev\dbms\dbmsmanager\com\ibase.h(682) : voir la déclaration de 'isc_interprete'
    1>..\..\..\..\DBMS\DBMSManager\src\InterbaseManager.cpp(537): warning C4244: 'argument' : conversion de 'long' en 'short', perte possible de données
    1>..\..\..\..\DBMS\DBMSManager\src\InterbaseManager.cpp(539): warning C4996: 'isc_interprete': a été déclaré déconseillé
    1>          d:\usr\memoria\dev\dbms\dbmsmanager\com\ibase.h(682) : voir la déclaration de 'isc_interprete'


    Jean Noël Martin


  • mardi 22 mai 2012 00:19
    Auteur de réponse
     
     
    Le message d'erreur indique que la fonction isc_sql_interprete n'existe
    pas. Le linker ne la trouve pas. Il y a peut-être une erreur dans le
    nom de la fonction, ou un problème de librairie.
     
    Les avertissement n'ont pas de rapport avec cette erreur.
     
    Ils concernent la fonction isc_interprete (pas isc_sql_interprete).
    Elle est déclarée obsolète : celui qui a écrit cette fonction indique
    qu'il est préférable de ne pas l'utiliser. Mais il est quand même
    possible de l'utiliser.
     
  • mardi 22 mai 2012 03:12
     
     
    Merci de ces indications: en fait j'utilise les librairies IBPP pour attaquer une base de donnée firebird. Ibpp compile bien mais sort au link. que faut il faire?

    Jean Noël Martin

  • mardi 22 mai 2012 10:04
    Modérateur
     
     
    Vérifiez dans quel .h est définie cette fonction, déduisez-y, avec la documentation, dans quelle librairie cette fonction est implémentée et ajoutez cette librairie dans les options du linker, dans les propriétés du projet.

    Paul Bacelar, Ex - MVP VC++

  • jeudi 24 mai 2012 08:58
     
     

    A l'analyse ce problème provient de vieilles fonctions qui attaquent directement les primitives isc. En fait la plupart peuvent être remplacées par des primitives IBPP. Cependant, je n'ai pas trouvé pour l’instant de substitut à isc_interprete. Je continue à chercher et j'apprécierais une aide.

    Visiblement ces problèmes viennent d'un fichier de bcb
    il faudrait savoir comment obtenir ces fonctions avec Visual Studio. ibpp est vérifié sous bcb et sous VS. Les requêtes sont pour Interbase et Firebird.

    ou les requêtes de base de sql sont ils décrites?

    J'ai résolue la plupart des primitives isc en prenant leur équivalent dans IBPP

    il me reste en besoin le fait de transcoder le status de retour de la base de donnée en une chaine de caractère qui sous bcb ( iBase.h) se faisait par isc_interprete. J'ai cherché du cote de SQLInterprete; mais ce n'est pas du tout le même service. En outre ils mentionnent un espace de nom using namespace Microsoft.Data.Schema.SchemaModel; qui n'est pas reconnu par le compilateur. Je clos donc cette discussion pour en ouvrir une autre sur un sujet plus ciblé


    Jean Noël Martin