J'ai besoin d'intégrer des .LIB a un progremme que je consoit avec MingW. Le probleme c'est que MingW n'aime pas du tout les .LIB. Existe t-il donc un moyen de transforùmer mon .LIB en .a.
Merci
J'ai besoin d'intégrer des .LIB a un progremme que je consoit avec MingW. Le probleme c'est que MingW n'aime pas du tout les .LIB. Existe t-il donc un moyen de transforùmer mon .LIB en .a.
Merci
C'est quoi comme type de .lib ? Il vient d'où ?
Bon en faite j'ai eu un probleme avec certaine fontion que mingw ne connassait pas j'ai donc créer des lib grace a TURBO C.
Et bien recompiles les avec MingW.
Turbo C est un compilateur DOS 16 bits, je me demande si tu n'essaye pas de faire utiliser à un compilateur Windows 32 bits des fonctions spécifiques à DOS. Dans ce cas, oublie de suite...
Ba je ne pense pas qu'elle soit specifique a DOS mais bon je peux me tromper (il s'agit des fonctions outport inport etenable disable interrupt....
Si cela ne macrhe pas je peux essayé decréer ma lib avec visual C mais le soucis restera le meme pour la lib.
toutes les fonctiosn que tu viens d'énumérer sont spécifiques DOS et ne marcheront jamais sous XP à moins d'être dans un driver...
Le problème c'est que j'utilise Windows 98. Mais avec le compilateur MingW .... Autre problème, Je n'arrive pas à inclure GTK sous turbo C.
Si vous pouviez m'aider à résoudre un de ses problèmes se serait sympa.
Oublie Trubo C, et essaye ça:
http://www.developpez.net/forums/vie...372813#2372813
Mais j'ai essayé ca il ne me met plus du tout de problème pour _outp et _inp, disable, enable marche aussi.
Mais les fonctions setvect, getVect etc... sont vraiment mais vraiment chiante... Il y a meme des attribut ptr ou IrqVect qu'il ne reconnait plus du tout (contrairement a turbo C qui les reconnait (ce que je ne comprend pas c'est que les fonctions existe dans DOS.h)
C'est pour ca que j'avais pensé créer une librairie à partir de Turbo C.
Les vecteurs d'interruption sont un concpet lié à l'architecture 16 bits. Ca a totalement disparru de la programmation classique 32 bits. Il n'y a pas d'équivalent simple. Que veux-tu faire ?
Ba j'aimerai faire compiler certain driver ... Bon pour etre précis on nous a demander de créer un programme qui pilote une carte d'acquisition (sur port ISA (c'est pas du matos super récent donc)) avec du graphisme (GTK). On nous a donner des driver (2 .c et 1 .h si tu veux je peux te les envoyer ....).
Le probleme c'est que ces drivers utilisent les dites fonctions.
Au début notre professeur voulait que nous utilisions MingW mais vu les gros soucis avec les drivers ils veux bien que l'on travaille sur turbo C qui compile (plus ou moins bien) les drivers.
Donc Voila le probleme si j'utilise MingW les drivers ne marchent pas(toutes les Interruptions IRQ). ET si j'utilise Turbo C je ne sais pas comment utiliser GTK (toute l'IHM est prete).
J'ai peur que ton prof soit à côté de la plaque
Ton driver est un driver DOS, ne pouvant être utilisé que dans un programme DOS.
MingW est un compilateur Win32, et donc pas DOS du tout.
GTK, à ma connaissance, n'existe pas sous DOS. Y'a un port pour Win32, mais rien pour DOS.
Donc, c'est mal parti.
Une solution de bricolage de secours, ça pourrait être, si les programmes TurboC permettent d'utiliser la carte, de développer ces derniers en DOS/TurboC donc, et de développer à coté des programmes GTK/MingW qui les lance de "manière cachée". On appelle ça un front-end graphique. Quand tu cliquerais sur un bouton GTK, le code derrière lancerait une exécution d'un programme Turbo C qui va bien. C'est une idée...
EN faite on à expliquer au prof le soucis et bon ... il y avait pas vraiment penser. Pour le moment vu que le river doit etre fonctionnelle avec tous sauf les IRQ on va tester toussauf les IRQ ). SI déja ca ca marche ce serait bien. Je vais ereflechir chez moi a ta solutionqui me semble bonne (bien que super dur (je pense))
Merci beaucoup
Bon ca devient de pire en pire en faite je n'arrive pas à utiliser les fonctions inp et outp ... Je peux entrer ce que je veux il me renvoi obstinément 255 ... Donc je vais chercher autre chose, on m'avait parler de createFile etc ... et je sais déja plus ou moins les utiliser le soucis c'est de savoir comment trouver le nom de la carte Isa (pour les port serie c COM1 .... etc mais pour un port Isa j'en sais rien ...)
Voila désolé d'avoir un pei déraper du sujet initial et si il faut que je recréer un sujet dite le moi par mp et je le ferai .
Merci encore.
ISA ce n'est pas un port de communication, c'est un bus matériel. Oublie CreateFile, car le nom que tu passes c'est celui d'un driver (associé à ton périphérique), et là, si j'ai bien compris, tu n'en n'a pas.
inp / outp ça utilise les instructions assembleur in / out qui lisent / écrivent sur les IO port. Peut être que tu lis pas au bon endroit, que tu n'a pas écris ce qu'il fallait avant, etc... Faut potasser la documentation technique de ta carte.
BA moi je demande pas mieux ... Dans la partie de mes drivers ou il y avait outpor tet inport j'aiajouter les lignes que tu a montré et j'ai remplacé les inport par des _inp et pareil pour outport (donc ma question ets de savoir si il existe une reele difference entre ce qu on doit passer en argument avec outp et ce qu'on doit passe avec outport (idem pour inp et inport)
A priori non, y'a que la taille de ce qui est lu / écrit qui peut varier (_inp, _inpw, _inpd...). C'est quoi le prototype de outport dans Turbo C ?
Voila les .c du driver (qui fonctionne sur turbo c ) et que je dois utiliser sous MingW
le .h
et le .c
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 #define ADR1 0x330 /* adr. carte partie AD */ #define ADR2 0x340 /* adr. carte partie IO */ #define IOIN 0 #define IOOUT 0 #define MULPLEX 1 #define COUNT0 0 #define COUNT1 1 #define COUNT2 2 #define TIMER 3 #define ADHIGH 4 #define ADLOW 5 #define STARTAD 6 #define UPDDA 7 #define DA1LOW 4 #define DA1HIGH 5 #define DA2LOW 6 #define DA2HIGH 7 #ifdef __cplusplus extern "C" { #endif void far initdrvad(int adr1, int adr2); void far setadr(int adr1, int adr2); void far setpolar(char pol); void far setchanel(int ch); void far setda1(unsigned int value); void far setda2(unsigned int value); void far outputio(unsigned char value); void far setbit(int bit, int value); unsigned int far inputio(void); #ifdef __cplusplus } #endif #endif
Voila j'ai essayé d'utiliser outp et inp (meme inpw et outpw. Le probleme c'est que j'obtiend quelque chose de fou ... et surtout que je commence à être fatiguée de ce projet
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 #include "ad.h" static char PCMES3_current_polar = 0; static int PCMES3_current_chanel = 0; static unsigned int PCMES3_current_out; static unsigned int PCMES3_current_da1, PCMES3_current_da2; static unsigned int PCMES3_adr1, PCMES3_adr2; void far initdrvad(int adr1, int adr2) { PCMES3_adr1 = adr1; PCMES3_adr2 = adr2; outputio(0); setda1(0); setda2(0); setpolar('U'); setchanel(0); } void far setadr(int adr1, int adr2) { PCMES3_adr1 = adr1; PCMES3_adr2 = adr2; } void far setpolar(char pol) { if ((toupper(pol) == 'U') || (toupper(pol) == 'B')) { PCMES3_current_polar = ((toupper(pol) == 'U') ? 1 : 0); outportb(PCMES3_adr2+MULPLEX,(PCMES3_current_chanel << 1) | PCMES3_current_polar); } } void far setchanel(int ch) { if ((ch >= 0) && (ch <= 7)) outportb(PCMES3_adr2+MULPLEX,((PCMES3_current_chanel = ch) << 1) | PCMES3_current_polar); } static void PCMES3_update_da(unsigned int da1, unsigned int da2) { outportb(PCMES3_adr1+DA1LOW, da1 & 0x00FF); outportb(PCMES3_adr1+DA1HIGH, da1 >> 8); outportb(PCMES3_adr1+DA2LOW, da2 & 0x00FF); outportb(PCMES3_adr1+DA2HIGH, da2 >> 8); inportb(PCMES3_adr1+UPDDA); } void far setda1(unsigned int value) { PCMES3_update_da((PCMES3_current_da1 = value), PCMES3_current_da2); } void far setda2(unsigned int value) { PCMES3_update_da(PCMES3_current_da1, (PCMES3_current_da2 = value)); } void far outputio(unsigned char value) { outportb(PCMES3_adr2+IOOUT,(PCMES3_current_out = value)); } unsigned int far inputio(void) { return inportb(PCMES3_adr2+IOIN); }
Désolé pour tous le code j'ai essayé de le diminuer un maximum.
L'équivalent de inportb / outportb est bien _inp et _outp.
La seule chose qui varie ensuite c'est la taille des int. Tu peux remplacer tous tes int (issus du code de Turbo C) par des short, mais je ne pense pas que ça change quelque chose.
Bon je vais remplacé mais le meme programme (avec inp a la place de inport ne marche pas pareil .... mais bon je vais essayer et je vous diré quoi ... (marre de ce projet ... )
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager