BTrieve + Langage C = Erreur compilation

geronimhurl -  
 geronimhurl -
J'ai essayé à plusieurs reprises de compiler un programme test en C qui permettrait d'utiliser les API de BTRIEVE.

Rien à faire j'ai toujours et encore un erreur de compilation.
Si quelqu'un a réussi à mettre en oeuvre ce miracle, je suis très très preneur.

J'utilise DJGPP, et dans la doc il est conseillé d'utiliser Borland (TC).

Pourtant la syntaxe est identique entre ces 2 compilateurs.

Il y avait un #define à mettre pour que le compilateur sache quel environnement est utilisé...

Si quelqu'un se sent l'âme d'un grand samaritain, je cherche de l'aide.

Parceque pour l'instant, dans l'entreprise où je suis, BTrieve est interfacé avec QuickBasic.

Et le QuickBasic, ça me sort par les trous de nez. et par le trou du *BIP* aussi.

Merci d'avance !!!!

5 réponses

geronimhurl
 
Up Up
0
leprechaun Messages postés 265 Date d'inscription   Statut Membre Dernière intervention   10
 
Quelle est l'err de compilation?

Si tu peux la retranscrire sur le post ce sera plus simple de t'aider.

Un jour je serai Castor a la place de Castor!!!
Good Luck
0
geronimhurl
 
Béh en fait j'ai un appel de fonction qui trouve pas sa... fonction.

J'inclue une librairie qui est blindée de #ifdef et ce genre de mots pour le précompilateur ou un truc de ce genre.

Il est demandé de faire un #define avec ces valeurs :
BTI_DOS - DOS 16-bit Apps
BTI_DOS_32R - Extended DOS with Rational + bstub.exe 32-bit Apps
BTI_DOS_32P - Extended DOS with Phar Lap 6.0 32-bit Apps
BTI_DOS_32B - Extended DOS with Borland PowerPack 32-bit Apps
BTI_DOS_16B - Extended DOS with Borland PowerPack 16-bit Apps
BTI_WIN - MS WINDOWS 16-bit Apps
BTI_WIN_32 - Windows NT and Windows 95 32-bit Apps
BTI_OS2 - OS2 16-bit Apps
BTI_OS2_32 - OS2 32-bit Apps
BTI_NLM - NetWare NLM 32-bit Apps
BTI_SQL - For 32-Bit OS2 SSQL Apps
BTI_SOL - Solaris 32-bit Apps
BTI_HPUX - HP Unix
BTI_AIX - IBM Aix
BTI_IRIX - Irix
BTI_DEC_UNIX - DEC Unix

je compile sous le DOS de windows NT4

j'ai donc choisi BTI_DOS_32R, parceque avec BTI_DOS, c'est lamentable le nombre d'erreur de compilation que j'ai.

je dois inclure btrapi.h et btrconst.h
le problème c'est que dans btrapi.h, il y a les définitions des fonctions, mais pas le code.

Donc il faut que j'inclue aussi btrapi.c

J'y comprends rien, ça m'agace.

Dans le bouquin de référence de BTRIEVE, ils parlent d'un fichier qui s'appelle MSCXBTRV.c , mais je l'ai pô.

Si quelqu'un trouve ça je suis preneur.

Je pense pas que vous puissiez réellement m'aider, mais si quelqu'un en a le courage, je serai éternellement (24 sec.) redevable :D :D :D
0
leprechaun Messages postés 265 Date d'inscription   Statut Membre Dernière intervention   10
 
Merci pour les infos, mais j'aurais preferé le msg de ton compilateur (le msg d'erreur).

En fait je ne connais pas BTRIEVE mais je pourrais peut etre t'aider si tu envois le rapport de compilation.

A priori, j'ai l'impression qu'il te manque des librairies car si les fichiers d'en tete de la fonction qui ne fonctionne pas sont present,
il me semble que ca ne peut etre que ca.

Un jour je serai Castor a la place de Castor!!!
Good Luck
0
geronimhurl > leprechaun Messages postés 265 Date d'inscription   Statut Membre Dernière intervention  
 
In file included from test2.c:9:
d:/djgpp/include/btrapi.c:75: parse error before '*' token
d:/djgpp/include/btrapi.c:75: `cdecl' declared as function returning a function
d:/djgpp/include/btrapi.c:75: field `cdecl' declared as a function
d:/djgpp/include/btrapi.c: In function `BTRVID':
d:/djgpp/include/btrapi.c:553: structure has no member named `functionPtr'
d:/djgpp/include/btrapi.c: In function `BTRV':
d:/djgpp/include/btrapi.c:614: structure has no member named `functionPtr'

voici mes messages d'erreur.

Tout semble lié à la déclaration du pointeur de fonction.

ça doit pas être la même sous TC que sous DJGPP...
je vais continuer de chercher mais voici le code de la ligne 75 ...

#if defined( BTI_DOS_32R )
typedef struct
{
char *Name;
void cdecl (*functionPtr) ( pmswParmBlock *bP ); //ligne 75
} IMPORTS[];
#define PROCESS7B 75
IMPORTS * _ImportedFunctions_ = 0;
#endif

qu'est qu'elle a de pas bien cette déclaration ?

je m'en vais me rafraîchir la tête dans les archives de commentçamarche pour trouver la déclaration d'un pointeur de fonction, zou...
A+
0
leprechaun Messages postés 265 Date d'inscription   Statut Membre Dernière intervention   10 > geronimhurl
 
void (cdecl*) functionPtr ( pmswParmBlock *bP ); //ligne 75

(void cdecl*) functionPtr ( pmswParmBlock *bP ); //ligne 75

Essais ses deux formes pour la ligne 75 mais je ne suis sure de rien.
D'ailleurs toute bonne volonté pour ce pb serait la bienvenue.

Un jour je serai Castor a la place de Castor!!!
Good Luck
0
geronimhurl > geronimhurl
 
void (*cdecl) ( pmswParmBlock *bP );

voilà la ligne que j'ai mis en remplacement, et ça l'air de passer la compi.

ça m'étonnerait que ça marche plus tard, mais bo,n j'aurai essayé...

je te tiens au courant si j'y arrive, mais à priori, sauf si quelqu'un a déjà réalisé cet interfaçage, personne peut trop trop m'aider, puisqu'en fait y a pleins de toutes petites erreurs partout...

To be continued.
0
geronimhurl > geronimhurl
 
j'ai mis ça.

void (*cdecl) ( pmswParmBlock *bP );

ça marche, mais bon ...

maintenant ça me file des erreurs de compilations un peu plus utilisables...

to be continued
0
teebo Messages postés 33491 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
hop, un ascenceur pour cause de ch'ti pb ;-)
.  .
\_/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
geronimhurl
 
Si quelqu'un trouve un moyen d'interfacer un langage C avec du Btrieve, je suis preneur... pitiééééééé

J'ai abandonné l'idée d'interfacer avec DJGPP, j'utilise(j'essaie) TC.

Mais il me semble que l'install de TC se soit mal passée...

ça FAIT CHIER !
0