Accueil > Forum > > > > dll pour vb6
dll pour vb6
lundi 7 mai 2007 à 17:54:29 |
dll pour vb6

draluorg
|
Salut a tous,
J'essai de faire une dll en C pour utiliser sous vb6, mais je recois toujours le message "Bad dll Calling Convention" depuis vb6 :(
Voici un exemple simple pour montrer comment je 'y prends:
Code C
#include <windows.h>
#ifdef BUILD_DLL #define DLL_EXPORT __declspec(dllexport) #else #define DLL_EXPORT #endif
long DLL_EXPORT Div(long a, long b);
long DLL_EXPORT Div(long a, long b) {
return (a / b); }
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { return TRUE; // succesful }
Declaration Vb: Private Declare Function Div Lib "sample.dll" (ByVal a As Long, ByVal b as long) As Long
Pour info j'utilises Code Blocks avec GCC mais j'ai tester avec Visual studio 2005 et j'ai les memes erreurs...
Quand on pose une question on est con 5 minutes, Quand on ne la pose pas on le reste toute sa vie...
|
|
lundi 7 mai 2007 à 20:55:55 |
Re : dll pour vb6

BruNews
|
Réponse acceptée !
VC++ 2005: Utilise ceci: http://www.cppfrance.com/code.aspx?ID=36940Il y a un template tout prêt pour DLL Réglages sont mis en compil C et export stdcall comme il se doit. Faudra copier le def qui est dans le dossier template dans le dossier de ton proj. ciao... BruNews, MVP VC++
|
|
lundi 7 mai 2007 à 22:17:28 |
Re : dll pour vb6

draluorg
|
Salut BruNews,
Merci beaucoup :) Mais je dois avouer que j'ai pas trop compris le fonctionnement de ton "prog" En fait j'ai pris le template j'ai mis ma fonction dedans j'ai ajouter le .def comme indiquer dans le fichier X1.cpp et j'ai du ajouter le nom de la fonction en dessous de Export dans le fichier .def
Au final ca marche impec, mais j'ai pas compris le system de template pour automatiser ca...
Quand on pose une question on est con 5 minutes, Quand on ne la pose pas on le reste toute sa vie...
|
|
lundi 7 mai 2007 à 22:22:38 |
Re : dll pour vb6

BruNews
|
Le prog template ne crée que le projet muni d'un fichier cpp avec les bons réglages compilo. Le def est à mettre à la main.
ciao... BruNews, MVP VC++
|
|
lundi 7 mai 2007 à 22:28:57 |
Re : dll pour vb6

draluorg
|
Erf c'est bon j'ai compris! je m'etais un peu perdu dans tous ces fichers, j'avais pas reussi a executer le prog lol
Encore merci ^^
Quand on pose une question on est con 5 minutes, Quand on ne la pose pas on le reste toute sa vie...
|
|
dimanche 13 mai 2007 à 20:42:00 |
Re : dll pour vb6

draluorg
|
Re,
J'ai un gros soucis avec memset si je mets un memset tout ce compile normalement sans erreur ni warning mais lorsque je veux utiliser la dll depuis vb6 il me met que ma dll est introuvable :( c'est bizarre comme erreur non ? ma dll est toujours dans le system32 et elle fonctionne tres bien si j'enleve le memset... J'ai pensé a un include manquant mais le compilo devrait me prevenir dans ce cas non ? Aussi le message d'erreur de Vb devrait etre du genre "cant load library" ou "cant find entry point" mais "dll introuvable" je sais pas dutout ou il va chercher ca...
une idée peut etre ?
Quand on pose une question on est con 5 minutes, Quand on ne la pose pas on le reste toute sa vie...
|
|
dimanche 13 mai 2007 à 20:49:12 |
Re : dll pour vb6

BruNews
|
hein.... Gros ce code ? sinon fais voir.
ciao... BruNews, MVP VC++
|
|
dimanche 13 mai 2007 à 21:00:59 |
Re : dll pour vb6

draluorg
|
non c'est juste quelques ptites fonctions pour apprendre un peu et pour tenter d'optimiser quelques fonctions de Vb
#define
_WIN32_WINNT 0x0501
#define
_WIN32_IE 0x0501
#include
<windows.h>
HINSTANCE thismod = 0;
#pragma
comment
(linker,
"/entry:myDllMain"
)
__declspec
(
naked
)
int
__stdcall
myDllMain(HINSTANCE hdll, DWORD dwReason, LPVOID Reserved){
// DLL_PROCESS_DETACH = 0, DLL_PROCESS_ATTACH = 1
__asm
{ mov eax, [esp+8] ; dwReason mov edx, [esp+4] ; hdll dec eax
//js short processDETACH
jne
short
mainRET push edx mov thismod, edx call dword ptr DisableThreadLibraryCalls
//jmp short mainRET //processDETACH:
mainRET: mov eax, 1 ret 12 }
}
#ifdef
__cplusplus
extern
"C"
{
#endif
/* FONCTIONS EXPORTEES ICI */
void
Div (
long
* a ,
long
b ) ;
long
Increment (
long
a ,
long
llen ) ;
void
Decrement (
long
* a ,
long
llen ) ;
long
MovMem (
long
a ,
long
b ,
long
c ) ;
void
MakeBuff (
long
* a ,
long
llen ) ;
__declspec
(
naked
)
long
Increment(
long
a,
long
b) {
__asm
{ mov eax, [esp+8] add eax, [esp+4] ret 8 }}
void
Decrement (
long
* a,
long
b) { *a -= b; }
void
Div(
long
* a,
long
b) { *a /= b; }
__declspec
(
naked
)
long
MovMem(
long
a,
long
b,
long
c){
__asm
{ push edi push esi mov edi,[esp+12] mov esi,[esp+16] mov ecx,[esp+20] rep movsb pop esi pop edi ret 12 }}
void
MakeBuff (
long
* a,
long
b) {
memset(a, 32, b);
//*a = *a / b; }
#ifdef
__cplusplus }
#endif
Quand on pose une question on est con 5 minutes, Quand on ne la pose pas on le reste toute sa vie...
|
|
dimanche 13 mai 2007 à 21:24:25 |
Re : dll pour vb6

BruNews
|
Attends, je vais compiler et voir si j'ai le prob.
Pour info: rep movsb, à bannir sur les processeurs modernes, trop lent.
memset, tu es certain que c'est ce que tu veux ??? En tout cas, faut éviter les routines CRT quand on fait un point d'entrée perso, c'est justement pour s'en passer.
ciao... BruNews, MVP VC++
|
|
dimanche 13 mai 2007 à 21:33:42 |
Re : dll pour vb6

draluorg
|
"rep movsb, à bannir sur les processeurs modernes, trop lent." Eh merci pour l'info :) mais tu remplace par quoi alors ?
"memset, tu es certain que c'est ce que tu veux ??? " eh bin ce serait pour creer un buffer en passant un StrPtr(MaString) depuis vb j'imagine d'apres ta remarque que c'est pas la meilleur solution...
Quand on pose une question on est con 5 minutes, Quand on ne la pose pas on le reste toute sa vie...
|
|
Cette discussion est classée dans : long, vb6, dll, export, div
Répondre à ce message
Sujets en rapport avec ce message
Embarquer une dll dans un executable [ par MetalDwarf ]
Voila je voudrais embarquer une dll dans un executable, c est a dire la mettre en data dans mon fichier source, et la reecrire sur le disque dur a l e
Workspace et export de fonctions [ par varbool ]
Salut,J'ai le makefile d'une application et comme je ne connais aucune méthode pour créer un espace de travail à partir d'un makefile j'ai du faire ca
Appel dll VB6 à partir de C++ [ par stof35 ]
Bonjour,Je dois réaliser l'intégration d'une DLL écrite en VB6 par un prestataire externe dans un projet C++. J'ai essayé par des moyens classiques ma
problème de syntax d'appel pour une dll en vb6.0 [ par hightower ]
Salut tout le monde!voila j'ai un problème, j'ai une dll qui a été faite pour gérer une carte d'E/S en VC++, et moi j'aimerai faire mon application en
Problème d'interfacage d'une DLL écrite en C++ avec vba [ par pierrinot ]
Bonjour, Je dois créer une DLL utilisable par un programme VBA. Je tombe sur un problème d'entête de fonctions. La DLL est bien compilée, mais lorsq
Utiliser un tableau de double en retour d'une DLL pour VB6 [ par les french texans ]
Bonjour, je vais essayer d'etre claire.J'ai un programme en VB6 (qui marche normalement) qui a un tableau de double :"Dim picture_array(0 To 310, 0 To
returnourner un entier long long [ par dlamalice ]
Bonjour,j'ai codé une dll toute bete et j'aimerai que cette dernière me retour un long long (64bit) statique.Mais quand je compile la ligne return ne
DLL COM et SAFEARRAYS [ par wismerhill__ ]
Bonjour, j' essai de trouver un moyen de remplir des arrays/matrices C++ par des arrays/matrices de string/UDT/double VBA, dans le but de faire des op
portage d'ActiveX VB6.0 en C++ [ par systemsb ]
Bonjour, Actuellement en stage,je dois porter une dll ActiveX Vb6.0 en C++(Visual Studio 2005) et je ne sais même pas quel types de projet créer(je
Intégration d'une DLL VB6 dans un projet CPP [ par guilleto ]
Bonjour à toutes et tous,Je développe un projet en C++ et je dois utiliser une DLL réalisée en VB6 !Je connais le nom de la DLL ainsi que le nom de la
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|