COMPILER ZLIB DANS PROJET VB

Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016 - 5 août 2004 à 19:46
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010 - 6 mai 2007 à 21:03
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/25180-compiler-zlib-dans-projet-vb

draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
6 mai 2007 à 21:03
Wow Nikkel!
Encore merci!

++
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
5 mai 2007 à 12:01
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
4 mai 2007 à 22:50
merci beaucoup mais eh j'ai du louper un episode...
de quel addin parles tu ? je n'en vois pas dans le zip o-0
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
4 mai 2007 à 21:49
Oui tu peux :

- D'abord tu concois tes fonctions tu les compiles
- Tu recupere les .obj crée lors de la compilation
- Tu les ajoutes grace a l'addin

- Tu ajoutes un module dans ton projet VB
- Tu ajoute des fonctions vide portant les nom des fonctions a importer
- Tu utilise l'addin pour lier les fontion vb et tes fonctions
- Tu compiles et le tour est joué

@+
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
4 mai 2007 à 20:13
Plop,

Concept surper interessant, que dis-je c'est genial!!!
Mais peux tu expliquer en quelques lignes comment faire pour Linker les fonctions ?
Puis-je linker des fonctions que j'écris moi meme en C ?
Si oui comment ?

++
juventus3 Messages postés 1 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 7 janvier 2007
7 janv. 2007 à 00:56
A Bzz:

J'ai eu le même problème mais j'ai pu le resoudre.

Vérifié que le fichier EBImPrev.ocx (sous control) et le fichier EBZipReader.dll (sous Library) sont bien régistrés. Si ça c'est ok, le programme fonctionne.

Les fichiers .bat inclus dans le fichier Zip ne semblent pas fonctionner si il-y-a des espaces dans le 'path' du fichier (utilisé des " " dans le path) ou si le 'path' est trop long.

Régistrer peut aussi donner des problème si la variable système pour 'path' n'est pas correct. Si c:\windows\system ou c:\windows\system32 ou c:\winnt\system32 (selon le OS) n'est pas inclu dans le 'path' le fichier regsvr32.exe n'est pas retrouvé et la régistration ne fonctionnera pas.

Pour être sur tu peux ouvrir un 'dosbox' et utiliser la commande complete. Par example

c:\windows\regsvr32.exe "c:\path to file\EBImPrev.ocx" (selon OS)

Le système doit répondre avec une message que le fichier est bien régistré. Si non la commande n'est pas bon.
siyamen Messages postés 1 Date d'inscription mercredi 12 octobre 2005 Statut Membre Dernière intervention 13 octobre 2005
13 oct. 2005 à 14:24
cool
cs_Bzz Messages postés 25 Date d'inscription jeudi 25 avril 2002 Statut Membre Dernière intervention 11 février 2005
2 févr. 2005 à 22:13
J'attends depuis tres longtemps des sources telles que celles la, en particulier l'affichage des images d'un zip. Par contre, j'ai pas su l'utiliser :/


pour DllTest
ca plante sur cette ligne , apres avoir choisi le zip
mZip.FileName = .FileName
"Le composant activeX ne peut pas creer l'objet"

Il est ou l'activeX ?


Pour EBIM..
y a pas de form, je dois copier les modules et controles dans un projet et a partir d'une forme appeller telle ou telle fonction?

itou pour EBzipreader ?


Désolé pour la question de noob ^^
DeadlyPredator Messages postés 222 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 30 juin 2008
24 août 2004 à 00:09
Oups! J'ai oublié de mentionner ce fichier dans la liste en haut :

Form1.obj - Le fichier OBJ de la feuille
Project1.obj - Probablement le fichier ressources du prog
VBAEXE6.LIB - lib de la machine virtuelle de VB
wrap.obj - mon wrapper, en asm compilé avec masm
Kernel32.lib - la lib qui contient tout sur kernel32.dll (MS)
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
23 août 2004 à 20:26
Ouai normal car comme dit plus haut suffit pas de lier avec la lib kernel faut pas oublier la vm de vb : VBAEXE6.LIB

@+
DeadlyPredator Messages postés 222 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 30 juin 2008
23 août 2004 à 20:12
Non VB refuse carément la transformation. Voici ma dernière démarche. J'ai créer mon projet VB avec un module dans lequel je déclare GetTickCount puis dans la feuille, je fais msgbox GetTickCount

Voici mon wrapper :

.386
.MODEL flat, syscall
option casemap :none
option prologue:none
option epilogue:none

_GetTickCount@0 PROTO

.DATA
.CODE

?GetTickCount@APIs@@AAGXXZ PROC
JMP _GetTickCount@0
?GetTickCount@APIs@@AAGXXZ ENDP

END

Le symbole _GetTickCount@0 qui correspond à l'API GetTickCount de Kernel32.dll est définit dans Kernerl32.Lib, le vrai de vrai fichier de ms comme ceci dans la section des symboles publics :

1F87A _GetTickCount@0
1F87A __imp__GetTickCount@0

J'ai aussi essayer avec le symbole __imp__GetTickCount@0 : même problème

Quand j'ai linker mon prog, il y avait les fichier suivant dans cet ordre :
Form1.obj - Le fichier OBJ de la feuille
Project1.obj - Probablement le fichier ressources du prog
wrap.obj - mon wrapper, en asm compilé avec masm
Kernel32.lib - la lib qui contient tout sur kernel32.dll (MS)

Ça compile nickel!!! Mais l'EXE est SCRAP!! Dans la liste des importation du prog, nada, rien d'autre que le GetTickCount! Donc le prog ne peut démarrer. Voilà toute la situation. Est-ce que quelqu'un aurait une solution?
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
23 août 2004 à 20:06
Le fichier tlb est utile qu'a la compilation. Une fois que l'executable est crée ce n'est pas la peine de le distribuer il ne servirais a rien, c'est pour cela que c'est une solution ideal)

@+
DeadlyPredator Messages postés 222 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 30 juin 2008
23 août 2004 à 20:00
Ouais je sais que utiliser un tlb ça fait une bonne job mais le prob c'est que ça fait un fichier tlb qui doit suivre l'exe. J'ai linker mon prog VB en utilisant le linker personnalisé que j'ai fait et qui est ici. Tout les fichiers de VB était là. Tout ce que j'ai fait c'est enlever le fichier .obj du module qui va ce faire remplacer
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
23 août 2004 à 08:07
DeadlyPredator>Pour les api de dll c'est encore plus simple il suffit de céer une tlb (TypeLibrary) pour que l'api soit incluse dans la section d'import de l'exe vb sa marche parfaitement et le temp d'execution est semblable a un appel d'api en c (ou presque ;) ) pour ton probleme de wrapper il faut faire attention a inclure TOUTE les lib necessaire au programme c'est a dire : kernel32.lib + VBAEXE6.LIB si tu en oublie un tout les appel a la machine virtuelle seront laissé de coté sans que cela ne provoque d'erreur de compilation mais ton exe ne fonctionnera pas

@+
DeadlyPredator Messages postés 222 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 30 juin 2008
23 août 2004 à 06:17
J'ai réeussi!!!! Presque!!!

Mon programme VB importait la fonction GetTickCount de Kernel32. Le seul problème c'est que toute les autres APIs du programme sont parties. J'avais fait une faute quand j'avais écrit le nom de kernel32 après avoir compilé le prog VB, tout était correct sauf que mon api ne marchaient pas. Mais c'est quand que j'ai corrigé le nom que tout c'est planté. Probablement que quand j'importe, le fichier .lib écrase certains trucs de VB (conflit kernel32.dll kernel32.dll).
DeadlyPredator Messages postés 222 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 30 juin 2008
23 août 2004 à 04:55
J'ai une grosse question pour EB :
Fait : VB n'appelle pas directement les APIs

Et on crée un fichier .Lib avec Visual Studio en créant un projet ayant le même nom que la Dll de l'API et qu'on y déclare la fonction de l'API GetTickCount de kernel32 par exemple et qu'on l'exporte avec 1 fichier .def

Puis, qu'on créer un .obj en cpp dans lequel on importe l'API de kernel32 par exemple avec le faux .lib créer avant.

Comment pourrait-on faire utiliser l'API définit en C++?
J'ai créer le fichier .Lib aproprié et le fichier .obj qui déclare l'API MAIS le problème c'est que VB cherche ?GetTickCount@AAGXXZ. Comment faire pour que le symbole de l'API déclarée dans le obj porte ce nom?

Si on pouvais, est-ce que ça permettrait d'obtenir des APIs plus rapides?
cs_Logan Messages postés 99 Date d'inscription mercredi 2 janvier 2002 Statut Membre Dernière intervention 9 juin 2008
6 août 2004 à 01:08
c coooooooool
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
5 août 2004 à 20:16
Afyn> simplement : oui
Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016
5 août 2004 à 19:46
Dois je comprendre que le code de la DLL est linkée dans l'exe VB ?

Dis moi le si c'est ça ...

Yop !

Afyn
Navedac
Rejoignez-nous