Micro_and_Macro
Messages postés43Date d'inscriptiondimanche 26 mars 2006StatutMembreDernière intervention 1 août 2009
-
9 mars 2007 à 19:41
Micro_and_Macro
Messages postés43Date d'inscriptiondimanche 26 mars 2006StatutMembreDernière intervention 1 août 2009
-
14 mars 2007 à 23:05
Bonsoir à tous,
j'ai créé une librairie à partir d'une DLL BMP2JPG.dll(de vbfrance) à l'aide de cette url http://win32assembly.online.fr/importlib.html, selon la première methode permetant d'executer les fonctions avec "Call".
A la compilation, j'obtient cette erreur (error A2006: undefined symbol : BMP2JPGpourVBFrance)
BMP2JPG etant l'une des fonctions de la lib.
Je précise que la lib est incluse dans le même répertoire que les autres libs comme ceci : includelib c:\masm32\lib\BMP2JPG.lib
Quelqu'un a-til déjà rencontré ce problème ?
Faut-il un fichier .inc allant de paire pour la déclaration des fonctions? (j'en doute)
Voilà merci d'avance(l'enjeu est vraiment important pour moi :p)
Micro_and_Macro
Messages postés43Date d'inscriptiondimanche 26 mars 2006StatutMembreDernière intervention 1 août 2009 14 mars 2007 à 23:05
Comme Monsieur le chat noir prend des vacances (merités?) :p
je dois "auto-resoluter" le post..
Ayant réussi en appliquant la seconde methode,celle qui permait d'appeler les fonction de la lib avec "invoke"
Je posterai un ptit prog qui fera la capture d'écran en bitmap puis la convertira en jpeg
avec un appel statique de la DLL à la fin de la semaine, vu que personne ne semble l'avoir déjà fait,ça pourrait servir
Micro_and_Macro
Messages postés43Date d'inscriptiondimanche 26 mars 2006StatutMembreDernière intervention 1 août 2009 10 mars 2007 à 10:53
BMP2JPGpourVBFrance PROTO :DWORD,:DWORD,:DWORD
error LNK2001: unresolved external symbol _BMP2JPGpourVBFrance@12
Le problème étant que la fonction prend 3 paramètres en entrée qui n'apparaissent pas dans le.def dont voici un extrait ?SetFrame@CxImage@@QAEXJ@Z
?SetFrameDelay@CxImage@@QAEXK@Z
?SetJpegQuality@CxImage@@QAEXE@Z
?SetOffset@CxImage@@QAEXJJ@Z
?SetProgress@CxImage@@QAEXJ@Z
?SetTransColor@CxImage@@QAEXUtagRGBQUAD@@@Z
?SetTransIndex@CxImage@@QAEXJ@Z
?Size@CxIOFile@@UAEJXZ
?Stretch@CxImage@@QAEJPAUHDC__@@ABUtagRECT@@@Z
?Tell@CxIOFile@@UAEJXZ
?Write@CxIOFile@@UAEIPBXII@Z
BMP2BMPAvecRedimpourVBFrance
BMP2GIFAvecRedimpourVBFrance
BMP2GIFpourVBFrance
BMP2JPGAvecRedimpourVBFrance
BMP2JPGpourVBFrance
Voilà,je vais essayer avec une autre dll pour voir si le problème persiste
Micro_and_Macro
Messages postés43Date d'inscriptiondimanche 26 mars 2006StatutMembreDernière intervention 1 août 2009 10 mars 2007 à 14:08
La capture au format BMP est bonne,mais rien ne se passe...
.386
.model flat, stdcall
option casemap :none
include \masm32\include\windows.inc ; Contient les déclarations de constantes et structures de Win32
include c:\masm32\include\user32.inc ;Déclaration des fonctions de la l'api user32
include c:\masm32\include\wsock32.inc
include c:\masm32\include\kernel32.inc
include c:\masm32\include\gdi32.inc
include c:\masm32\include\winmm.inc
include c:\masm32\include\advapi32.inc
include c:\masm32\include\shell32.inc
include c:\masm32\include\wininet.inc
include capture.inc
;Bibliothèques api
includelib c:\masm32\lib\kernel32.lib;Support d'API de base pour les noyaux Windows 32 bits (mémoire, disques, processus, taches, modules).
includelib c:\masm32\lib\shell32.lib ;Bibliothèque d'API Shell 32 bits.
includelib c:\masm32\lib\user32.lib ;Bibliothèque pour routines d'interfaces utilisateur (fenêtres, menus, messages, ...).
includelib c:\masm32\lib\gdi32.lib ;Bibliothèque d'API pour le périphérique à interface graphique.
includelib c:\masm32\lib\winmm.lib ;Bibliothèque multimédia Windows (multimédia, son, midi, ...)
includelib c:\masm32\lib\advapi32.lib;Start computer, acceder au registre,activer un service
includelib c:\masm32\lib\wininet.lib
includelib c:\masm32\lib\wsock32.lib ;api winsocket
includelib c:\masm32\lib\BMP2JPG.lib ;librairie chantage ;--)))
.data
path1 db ".\screenshot.bmp",0
path2 db ".\screenshot.jpg",0
.code
Micro_and_Macro
Messages postés43Date d'inscriptiondimanche 26 mars 2006StatutMembreDernière intervention 1 août 2009 10 mars 2007 à 14:13
Raaaahhh le baaad,il me reste jusqu'à mercredi pour faire fonctionner cette lib!!!!!
Reviens vite chat noir erudit !! :--))
Moins égoistement bonnes vacances, si tu pars pour le plaisir ^^
Guilou34
Messages postés142Date d'inscriptionmercredi 5 avril 2006StatutMembreDernière intervention29 janvier 20161 12 mars 2007 à 15:12
Ton appel au secours m’interpelle et je me demande s’il n’y pas quelque confusion dans la manière dont tu conçois le problème. <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>
Si je comprends bien, tu désires modifier une DLL existante, à l’aide de LibMain, dans une application Msdos, mais alors pourquoi inclure un ensemble de fonctions, (API etc ) de Windows? Parce que cette DLL y fait appel? On conçoit bien qu’une DLL se contentant de convertir du BMP en JPG n’a nul besoin d’utiliser l’interface graphique.
Est-ce l’obligation d’employer Masm32 et Windows ?
Enfin, il me semble que BMP2JPGpourVBfrance est utilisé à la fois comme prototype et comme procédure interne à ton module avec un appel récursif. En outre, tu places toi-même les arguments sur la pile sans respecter le prototype et dans le mauvais ordre (le plus à gauche doit être empilé le premier).
En t’obligeant à mieux exposer ton problème, ce sera peut-être comme je l’ai souvent expérimenté, le moyen le plus simple de le résoudre par toi-même.
Micro_and_Macro
Messages postés43Date d'inscriptiondimanche 26 mars 2006StatutMembreDernière intervention 1 août 2009 12 mars 2007 à 17:00
Oui alors.. je vais essayer d'être plus clair :)
Est-il possible de ne pas appeler la DLL à chaque fois que je veux convertir une image?
C'est à dire,en créant une libraire qui inclurait cela à la compilation?
Micro_and_Macro
Messages postés43Date d'inscriptiondimanche 26 mars 2006StatutMembreDernière intervention 1 août 2009 12 mars 2007 à 17:05
J'ai comme l'impression de devoir faire quelque chose d'impossible ,et comme de toute façon je ne comprend pas bien le sytème des .lib et .inc à la base :p c'est pas gagné.
Guilou34
Messages postés142Date d'inscriptionmercredi 5 avril 2006StatutMembreDernière intervention29 janvier 20161 13 mars 2007 à 00:17
Mais c’est précisément la raison d’être d’une procédure ou d’une fonction de faire partie d’une application pour pouvoir être exécutée plusieurs fois. <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>
Dans l’univers MSDOS, Masm32 produit un fichier de type .OBJ incomplet s’il fait appel à des procédures extérieures (qui sont aussi des fichiers de type .OBJ).
C’est l’éditeur de liens ( Link32 par exemple) qui créera l’application exécutable de type .EXE. Encore doit-il savoir où trouver ces différents modules. C’est généralement dans un fichier .DEF qu’on lui indique la liste des librairies qu’il devra consulter.
Avec Windows, il en va de même mais il existe aussi des librairies de type DLL ( Dynamic Link Library ) qui présentent de multiples avantages par rapport aux modules de type OBJ. créés par l’assembleur. Ainsi, par exemple, si plusieurs applications font appel à la même DLL, Windows n’en chargera en mémoire qu’une seule instance qui sera utilisée par toutes les applications.
Par ailleurs, l’utilité de l’assembleur se pose essentiellement lorsqu’on travaille en temps réel. Pour ton problème, je n’en vois pas la nécessité sauf dans un but didactique mais alors ton exemple est-il bien choisi ?
Désolé, mais il y a chez toi quelques lacunes à combler mais surtout ne désespère
Micro_and_Macro
Messages postés43Date d'inscriptiondimanche 26 mars 2006StatutMembreDernière intervention 1 août 2009 13 mars 2007 à 07:58
Oui quelques lacunes théoriques surement,mais en fait c'était plutot clair avant de poster sur différents forum et hum , je reçoit des réponses de toute sortes ...
Ah au fait je travail pas en MS-Dos hein^^,et toutes les lib inclusent de mon prog sont là à cause du copier coller pour l'exemple,rien de grave....Bon ,je ne sais plus quoi penser suite à cette url http://www.developpez.net/forums/showthread.php?t=293758 ou on m'a dit que c'était impossible...