Problème de dll pour VBA pour un nul

wismerhill__ Messages postés 88 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 26 juillet 2007 - 12 juin 2006 à 15:12
 BruNews - 14 juin 2006 à 16:25
Bonjour à tous, je suis grand débutant en C++ et je m'y met apres VBA
Je voudrais faire une dll en c++ car VBA ne va assez vite, le problème c'est que je n'arrive à rien, ca fait 1/2 journée que je suis dessus et je deviens fou !!!!

je dispose de Microsoft Visual Studio 2003.NET je voudrais faire un truc super simple :

//mon code .cpp

#include "Def.h"
void__stdcall HelloWorld(void )
{
    MessageBox(NULL,"Hello !","Message",MB_OK);
}

//Mon code .h

#include "windows.h"
#define export __declspec (dllexport)

export void__stdcall HelloWorld(void );

//mon appelle de cette dll dans VBA
PrivateDeclareSub HelloWorld Lib"Fonctions.dll" ()

Je ne trouve pas (n'arrive pas à generer) la DLL... je n'ai pas le projet de type Win32 DLL proposé ...???
qqn peut il m'aider svp ???

wis : in tartiflette I trust (like the others)

23 réponses

nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
12 juin 2006 à 15:29
Ecrit un nouveau fichier appelé main.cpp, et écrit dedans :

#include <windows.h>
#pragma linker("/subsystem:dll")

BOOL WINAPI DllMain(HINSTANCE, DWORD, LPVOID)
{
    return TRUE;
}
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
12 juin 2006 à 15:40
Je sais pas si il exporte bien ses fonctions. Tu pourrais essayer:

#define EXPORT(x) extern "C"  x __declspec(dllexport) __stdcall

EXPORT(void) HelloWorld(void );

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
12 juin 2006 à 15:41
Oui c'est vrai. Mais bon il faudrait deja qu'il réussisse à générer sa DLL...
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
12 juin 2006 à 15:45
Oui mais attention tu t'ai trompé.

#include <windows.h>
#pragma comment(linker, "/subsystem:dll")

BOOL WINAPI DllMain(HINSTANCE, DWORD, LPVOID)
{
    return TRUE;
}

___________________________________________
Les plus grands esprits trouvent toujours une solution
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
wismerhill__ Messages postés 88 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 26 juillet 2007
12 juin 2006 à 15:46
Ok mais dans quel type de projet ???
File/New Project/Win32 Project ou Win 32 Console?? je n'ai que cela de dispo ... tandis que sur d'autres version j'avais Win 32 DLL ...

wis : in tartiflette I trust (like the others)
0
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
12 juin 2006 à 15:47
Met n'importe quel projet, la ligne #pragma linker("/subsystem:dll") va dire de générer une DLL windows.
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
12 juin 2006 à 15:49
Ichhh. Ben normalement avec le pragma tu devrais être correct. À tu la PSDK? Sinon il te la faut pour faire de la programmation win32 sur VCExpress 2005.

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
12 juin 2006 à 15:49
Oups trop tard... Mais ce que je dit pour la SDK tien toujours cependant.

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
12 juin 2006 à 15:50
Relis son message : il dit bien qu'il utilise VS 2003...
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
12 juin 2006 à 15:52
Ok mais c'est une version .NET. Bon on sais jamais. Encore un chose. Fais attention, c'est pas
#pragma linker("/subsystem:dll")
mais
#pragma comment(linker, "/subsystem:dll")

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
wismerhill__ Messages postés 88 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 26 juillet 2007
12 juin 2006 à 16:11
// cpp2vba.cpp : Defines the entry point for the console application.



#include
"stdafx.h"


#include
<windows.h>


#pragma



comment
(linker, "/subsystem:dll")
#include "cpp2vba.h"

BOOL WINAPI DllMain(HINSTANCE, DWORD, LPVOID)
{

return
TRUE;
}







void



__stdcall
HelloWorld(

void
)
{
MessageBox(NULL,"Hello !","Message",MB_OK);
}






// cpp2vba.h : Defines the entry point for the console application.



#include
"windows.h"


#define
export

__declspec
(

dllexport
)
export

void



__stdcall
HelloWorld(

void
); Pfffffff alors là en fait ca ne compile même plus j'ai comme erreure :

c:\Documents and Settings\umansky\My Documents\Visual Studio Projects\cpp2vba\cpp2vba.cpp(4): fatal error C1083: Cannot open precompiled header file: 'Debug/cpp2vba.pch': No such file or directory

wis : in tartiflette I trust (like the others)
0
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
12 juin 2006 à 16:12
Va dans les options du projet et essaie de trouver l'onglet parlant des "Precompiled headers", et desactive l'utilisation des precompiled headers.
0
wismerhill__ Messages postés 88 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 26 juillet 2007
12 juin 2006 à 16:15
T'es un geni ca compile ...

1. Je viens de faire quoi ?
2. Comment je genere ma dll maintenant ?

wis : in tartiflette I trust (like the others)
0
wismerhill__ Messages postés 88 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 26 juillet 2007
12 juin 2006 à 16:18
Lorsque je build mon projet j'ai ùmaintenant l'erreur suivante
cpp2vba fatal error LNK1117: syntax error in option 'subsystem:dll'

wis : in tartiflette I trust (like the others)
0
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
12 juin 2006 à 16:19
Les precompiled headers servent à compiler une fois pour toutes les headers qui ne seront pas modifiés, comme windows.h, etc... Ca permet de gagner du temps pendant la compilation, mais ça donne certaines contraintes(obligation d'inclure le precompiled header dans TOUS les fichiers...).

Normalement, ta solution se compile et va former une DLL. Si il ne fait que compiler, utilise la commande Build dans les menus qui va effectuer les commandes de link.
0
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
12 juin 2006 à 16:22
En effet, je viens de regarder et c'est /dll au lieu de /subsystem:dll.

Rajoute aussi :
#pragma comment(linker, "/out:"Debug/nom_du_fichier.dll")
et remplace nom_du_fichier par le nom souhaité de ta DLL. Cela te générera un fichier .DLL.
0
wismerhill__ Messages postés 88 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 26 juillet 2007
12 juin 2006 à 16:24
Ben malheureusement qd je fais
Build /Build Solution je choppe l'erreur  cpp2vba fatal error LNK1117: syntax error in option 'subsystem:dll'

PS : dans les proprietes j'ai 
Configuration/proprieties/configuration Type : Application (exe) je devrais pas avoir DLL à la place ... ?

Rmq : ca donne la même erreur mias bon ...

wis : in tartiflette I trust (like the others)
0
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
12 juin 2006 à 16:25
Regarde ma réponse juste au dessus, j'ai donné la solution...
0
wismerhill__ Messages postés 88 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 26 juillet 2007
12 juin 2006 à 16:30
Bravo !!! c'est bon juste pour ceux qui referont ce que je viens de faire c'est
#pragma comment(linker, "/out:Debug/nom_du_fichier.dll")

(un " en trop mais c t évident)
merci beaucoup nightlord de ta patience, je vais essayer de le faire executer par vba ...

PS : tu as dejà essayé de faire executer une dll par vba ?

wis : in tartiflette I trust (like the others)
0
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
12 juin 2006 à 16:32
Non je n'ai jamais fait de VB, ni de VBA, ni de VBS...
Je reste uniquement dans le C/C++, le JS (de temps en temps), le HTML/CSS/PHP, et le CGI en C.
0
Rejoignez-nous