Accueil > Forum > > > > créer une dll avec visual C++ 2008 express
créer une dll avec visual C++ 2008 express
samedi 12 décembre 2009 à 15:41:53 |
créer une dll avec visual C++ 2008 express

marco62118
|
bonjour à tous
y aurait il quelqu'un qui pourrait m'aider à créer (pas à pas) une dll en c++ avec "visual C++ 2008 express"
Je ne suis pas sur d'abord de quel modèle choisir puis quel fichier créer et enfin comment compiler pour récuperer la dll et enfin comment l'implémenter dans vb.
voici le code que j'aie essayé de rentrer dans main.cpp
Code C/C++ : //définition du symbole d'export
#define export __declspec (dllexport)
//inclusion des fichiers nécessaires
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
export void __stdcall VariationTableau(unsigned char *PicBits2, unsigned char *PicBits, long nbElem, double coeff);
void __stdcall VariationTableau(unsigned char *PicBits2, unsigned char *PicBits, long nbElem, double coeff)
{
long dec;
for(dec = 0;dec<nbElem;dec++)
{
PicBits[dec] = (unsigned char)(PicBits[dec])+(((unsigned char)(PicBits[dec])-(unsigned char)(PicBits2[dec])) * coeff);
}
}
|
|
samedi 12 décembre 2009 à 19:27:06 |
Re : créer une dll avec visual C++ 2008 express

BruNews
|
Une DLL devrait toujours être faite en C, pas en C++. On évite ainsi les éventuels problèmes de décoration du nom d'export de la fonction. Ok ça tombe impec, il n'y a pas un iota de C++ dans ton code.
Pour résumer, tu fais des fichiers *.c et tu règles la compil en C dans les options du compilo.
Ensuite tu supprimes ta série d'#include, seul <windows.h> suffit sur VC++.
Eviter les biniouteries du genre "__declspec(dllexport)" et autres machins qui masquent ce qu'on doit mettre. Au lieu de cela, tu préfixes à tout coup tes fonctions de __stdcall (ONLY en 32 bits, c'est __fastcall en x64) et tu exportes tes fonctions en les déclarant dans un fichier def.
En procédant ainsi on obtient toujours une DLL parfaitement conforme au standard API.
ciao...
BruNews, MVP VC++
|
|
samedi 12 décembre 2009 à 21:46:10 |
Re : créer une dll avec visual C++ 2008 express

marco62118
|
bonjour merci pour cette réponse
"biniouteries" j'ai recopié l'exemple qu'on m'avait donné, je n'ai changé que le coeur de la fonction.donc il me reste que :
Code C/C++ : //inclusion des fichiers nécessaires
#include<window.h>
export void __stdcall VariationTableau(unsigned char *PicBits2, unsigned char *PicBits, long nbElem, double coeff);
void __stdcall VariationTableau(unsigned char *PicBits2, unsigned char *PicBits, long nbElem, double coeff)
{
long dec;
for(dec = 0;dec<nbElem;dec++)
{
PicBits[dec] = (unsigned char)(PicBits[dec])+(((unsigned char)(PicBits[dec])-(unsigned char)(PicBits2[dec])) * coeff);
}
}
ceci dans fichier main.c
dans les fichiers sources j'ai créé main.def contenant:
Code C/C++ :
LIBRARY VariationTableau
EXPORTS
VariationTableau
tu règles la compil en C dans les options du compilo.
je sais pas dans quel onglet exactement c'est??
puis pour compiler je fais générer la solution??
|
|
samedi 12 décembre 2009 à 21:50:58 |
Re : créer une dll avec visual C++ 2008 express

marco62118
|
rebonjour
j'avais fait une petite erreur window.h à la place windows.h
ceci réparé j'ai regénéré le projet mais dans les répertoires du projet je ne retrouve plus de dll
|
|
samedi 12 décembre 2009 à 21:52:00 |
Re : créer une dll avec visual C++ 2008 express

marco62118
|
cliqué trop vite
il me reste dans le répertoire debug le fichier VariationTableau.ilk
|
|
dimanche 13 décembre 2009 à 09:40:05 |
Re : créer une dll avec visual C++ 2008 express

BruNews
|
Que comptes-tu faire du debug depuis VB ???
Compile en RELEASE.
ciao...
BruNews, MVP VC++
|
|
dimanche 13 décembre 2009 à 11:32:05 |
Re : créer une dll avec visual C++ 2008 express

marco62118
|
je m'excuse mais j'ai du mal à suivre!!
en fait je veux transformer une dll qui avait été écrite en C ou C++ qui permettait d'ajouter une valeur à tout un tableau, ceci très rapidement voici le code d'origine
Code C/C++ :
void __stdcall GradientTabloByte2(unsigned char *PicBits2, unsigned char *PicBits, long nbElem, double coeff)
{
long dec;
for(dec = 0;dec<nbElem;dec++)
{
PicBits2[dec] = 229 + (unsigned char)((PicBits[dec]-229) * coeff);
}
}
j'ai compris la programation en C++, je voulais transformer cette fonction pour additionner deux tableaux donc créé un autre code que tu as déjà vu. Mais mon problème c'est que je n'arrive pas à recréer une DLL!
je ne compte rien faire du debug, c'est dans ce répertoire que j'avais vu qu'il y avait tableauvariation.dll! c'est bien mon problème je ne sais ni créer cette dll ni la retrouver pour simplement la copier dans mon répertoire ou mon projet VB est inscrit!
en conclusion je voudrais un petit tutoriel pouyr créer cette dll avec mon bout de code. en suivant les différents tuto que j'ai vu j'arrive toujours à un momment ou je ne sais plus quoi faire (mon anglais à plus de 30ans)
|
|
dimanche 13 décembre 2009 à 20:17:05 |
Re : créer une dll avec visual C++ 2008 express

BruNews
|
Dans ce zip:
http://brunews.com/GradTab.zip
tu auras:
- GradTab.dll qui exporte la fonction GradientTabloByte2().
- GradTab.xls qui contient le module VBA de test.
Tout semble aller impec.
Gaffe dans le "Declare Sub...", virer le chemin en dur que j'ai mis et place la dll où tu voudras.
POINT IMPORTANT:
- J'ai utilisé le jeu d'instructions SSE2 pour faire les MUL de flottants par 4, ça ne tournera donc pas sur des PCs de musée, à toi de voir.
- Regarde les colonnes A et B dans Excel avant de lancer, la A contient le résult de la DLL actuelle. Si résults de B te conviendraient mieux tu le dis et je recompile avec instructions en convert vers 0.
Voici ce qui est dans le module VB d'Excel:
Declare Sub GradientTabloByte2 Lib "E:\GradTab.dll" (pDest As Byte, pSrc As Byte, ByVal nElem As Long, ByVal dCoeff As Double)
Sub testDLL()
Dim btDst(24) As Byte, btSrc(24) As Byte
Dim i As Long
Dim b As Byte
For i = 0 To 23
btSrc(i) = b
b = b + 1
Next i
GradientTabloByte2 btDst(0), btSrc(0), 24, 2.4
For i = 0 To 23
Cells(i + 1, 1) = btDst(i)
Next i
End Sub
ciao...
BruNews, MVP VC++
|
|
lundi 14 décembre 2009 à 18:51:34 |
Re : créer une dll avec visual C++ 2008 express

marco62118
|
bonsoir
désolé je crois que je me suis mal fait comprendre je veux savoir faire moi même une dll avec visual C++ 2008 express la fonction qui sera dans ma dll je crois que je saurais la faire mais c'est le mode opératoire pour créer cette dll que je ne sais pas!!!
|
|
lundi 14 décembre 2009 à 18:56:51 |
Re : créer une dll avec visual C++ 2008 express

BruNews
|
Essaie en utilisant mes templates:
TEMPLATES C/C++ POUR VS 2008
http://www.cppfrance.com/code.aspx?ID=44835
Tu auras ainsi toutes les options configurées.
ciao...
BruNews, MVP VC++
|
|
Cette discussion est classée dans : créer, char, unsigned, dec, picbits
Répondre à ce message
Sujets en rapport avec ce message
pb avec conio je cher cherche l'erreur( j'ai merde sur le mess precedent) [ par kin ]
portpia.cpp#include"PortPiaPc.h"void main(){ PortPiaPc inst; inst(0x320,0x0f);}PortPiaPc.cpp#include "PortPiaPc.h"#include "conio.h"PortPiaPc::PortPia
Comment concertir Ansistring en unsigned char*????? [ par asik38 ]
Ansistring x;unsigned char str[100];str[100]=x;??????Merci!!!
Pointeurs sur des tableaux de plusieurs dimensions [ par ProGamer ]
J'ai besoin de faire des pointeurs sur ce genre de tableaux. Voici comment je m'y prends (et surtout, voici comment ça ne marche pas...):unsigned char
pb avec variable [ par jeffise57 ]
Please aidez moiJe reçoit comme arugument du fonction des variables unsigned char* et je doit passer dans une deuxième fonction les même arguments mai
char* to unsigned char* [ par rodrigos ]
comment peut-on convertir un char* en unsigned char*?à quoi correspond un unsigned char*?Merci pour votre aide!!
Sniffing - raw socket [ par krum ]
J'ai essayé de coder un programme capable de me donner la description de l'en tete IP et TCP des packets que je reçois d'une certaine IP,mais lorsque
Conversion de unsigned char en float (17.6E) [ par lemenager ]
Bonjour,Je dois lire un fichier binaire dans lequel il y a des float en format (17.6E). J'ai l'impression que je suis oblige de les lires en unsigned
struct [ par ready4 ]
Je ne sais pas comment initialiser mes moteurs //intialisation moteursM1 = {2, 1, 1, 2, 0, 0, 120};M2 = {8, 4, 4, 8, 0, 0, 80};M3 = {32, 16, 16, 32, 0
transformer un tableau 2d en image bitmap [ par gyzmo1 ]
Bonjour a tous, voilà mon problème, je suis en train de mettre en place une méthode de comparaison de signature manuscrites. Cette méthode s applique
RegOpenKeyEx [ par guitoulefoux ]
Bonjour,Pourriez vous m'aider a corriger mon erreur.Voici mon bout de code :TCHAR MenDema[1024];[...]HKEY hKey;RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWA
Livres en rapport
|
Derniers Blogs
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 SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
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
|