begin process at 2012 05 28 23:42:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

créer une dll avec visual C++ 2008 express


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

Administrateur CodeS-SourceS
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

Administrateur CodeS-SourceS
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

Administrateur CodeS-SourceS
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

Administrateur CodeS-SourceS
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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,296 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales