[VS 2005 e c++]

Fermé
aurna Messages postés 184 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 26 novembre 2009 - 10 mai 2007 à 13:20
aurna Messages postés 184 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 26 novembre 2009 - 19 mars 2008 à 01:22
Slut svp je suis en train de developper une dll en c++.j'utilise VS 2005.
voici les erreurs k je rencontre,je sais cmt les résoudre:

1>------ Build started: Project: test1, Configuration: Debug Win32 ------
1>Linking...
1>mfcs80ud.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in test1.obj
1> Creating library C:\Beps\test1\Debug\BEPSvdm.lib and object C:\Beps\test1\Debug\BEPSvdm.exp
1>C:\Beps\test1\Debug\BEPSvdm.dll : fatal error LNK1169: one or more multiply defined symbols found
1>Build log was saved at "file://c:\Beps\test1\test1\Debug\BuildLog.htm"
1>test1 - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


Merci de me répondre.
Je vous en serai reconnaissante.
A voir également:

8 réponses

aurna Messages postés 184 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 26 novembre 2009 7
19 mars 2008 à 01:22
Merci.J'avais trouvé la réponse ailleurs,dans un autre forum.
Il yavait juste conflit dans la declaration de la librerie de l' MFC.
Merci encore.
2
Voilà typiquement le genre de problème qu'on a quand on utilise cette merde de visual studio sans avoir les bases de la programmation C/C++ !
Ton problème viens du fait que tu ne sais pas (du moins c'est l'impression que tu donne) le programme VS lors de la "compilation". L'erreur qu'il te donne c'est qu'il y a des fonction déclaré mais non défini.
Tant qu'on ne saura pas quelle est la commande d'édition des liens, il est presque impossible de t'aider.
Mon conseil serait que tu prennes un cour/tutoriel de C et que tu compile à la main (en ligne de commande) des petits projets de 2 ou 3 sources. 


Quel con ... mais quel con ... je te jure... encore un bon gros grincheux ...
1
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
10 mai 2007 à 14:10
tu fait de multiple definitions.
on voi pas ce que tu fait, il est donc difficiel de t'aider.
Dans ton programme, tu défini plusieur fois une variable ou une fonction.
0
aurna Messages postés 184 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 26 novembre 2009 7
10 mai 2007 à 14:49
ok,peut etre je pourrai avoir des precisions sur ce ke je dois envoyer pour permettre de me répondre plus facilement.Ici j'ajoute ma structure de données,j'ai rien vu de double dans les definitions et _DllMain@12 è une fonction ki s'est ouverte kan j'ai crée la page pr ècrire mon projet.
voici ma structure de données
// test1.cpp : Defines the entry point for the DLL application.
//

#include "stdafx.h"
#include "test1.h"
#include <XFSAPI.H>
#include <XFSADMIN.H>
#include <XFSPTR.H>
#include <XFSVDM.H>


#ifdef _MANAGED
#pragma managed(push, off)
#endif
/*typedef struct _wfs_vdm_status{
WORD wDevice;
WORD wService;
LPWFSVDMAPPSTATUS *lppAppStatus;
LPSTR lpszExtra;
}WFSVDMSTATUS, *LPWFSVDMSTATUS;*/

CArray<HSERVICE,HSERVICE> hs;
/* typedef struct tr{
LPSTR lpszAppID;
HSERVICE hs;
HRESULT status;
int sent;
}STATE;
CArray<STATE,STATE> hslp;//ucciso*/

int c=0,c1=0;
HWND hw;
int c2=0;
int count2=0;
INT_PTR x,y;
int count;
LPWFSVDMCAPS lpCaps;

typedef struct id {
HSERVICE hserv;
REQUESTID idr;
HRESULT lock;
DWORD dwec;
HWND hwr;
//CArray<DWORD,DWORD> dwtrace;
HRESULT status;
LPSTR lpszAppID;
int sent;
}STREQUESTID;

STREQUESTID id1;

CArray<STREQUESTID,STREQUESTID> hsrq;


typedef struct ht1{
HSERVICE hserv;
DWORD dwt;
}THSERVICE;
THSERVICE ht;
CArray<THSERVICE,THSERVICE> dwtrace;


BOOL APIENTRY DllMain( HINSTANCE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:


break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}

return TRUE;



}

#ifdef _MANAGED
#pragma managed(pop)
#endif


// This is an example of an exported variable
TEST1_API int ntest1=0;

// This is an example of an exported function.

TEST1_API int fntest1(void)

{
return 42;
}

// This is the constructor of a class that has been exported.
// see test1.h for the class definition
Ctest1::Ctest1()
{
return;
}

je suis à l'écoute.Et je vs remercie pour la première réaction.
A plus!
0

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

Posez votre question
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
10 mai 2007 à 17:55
C'est de la prog Windows, j'y comprend pas grand chose.
Pour moi, il n'y a pas besoin de point d'entrée dans une DLL. Pour moi une dll c'est une lib dynamique sous win, équivalent en gros aux .so sous linux.
la fonction existe déjà dans mfcs80ud.lib d'après ce que je comprend.
Dit nous le nombre de fichiers que tu utilise pour créer ta DLL et la commande de compilation
0
aurna Messages postés 184 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 26 novembre 2009 7
10 mai 2007 à 18:12
Slut,le nombre de fichier k j'utilise è 7,il ya le file .cpp ki est celui où j'écris,et les 6 files .h k j'ai inclu.En fait je crois k c ça car je suis debutante dans ce cadre.(Mon objectif final est de faire un service provider.pr ça je fais une dll ki importe les fonctions du service provider.)
Après certaines recherches sur le net,jé vu une methode de résolution des pb type error:LNK2005 ... on disait k'il fo aller ds les propriétés du projet,puis, linker,puis input.ds la fenetre ki s'affiche,il ya une ligne ki dit :<Ignore specific library>,là il fo écrire la librerie correspondante ki dans ce cas est mfcs80ud.lib. je l'ai fait,voici le résultat de la compilation:

1>------ Build started: Project: test1, Configuration: Debug Win32 ------
1>Linking...
1> Creating library C:\Beps\test1\Debug\BEPSvdm.lib and object C:\Beps\test1\Debug\BEPSvdm.exp
1>stdafx.obj : error LNK2001: unresolved external symbol __afxForceEXCLUDE
1>test1.obj : error LNK2001: unresolved external symbol __afxForceEXCLUDE
1>stdafx.obj : error LNK2001: unresolved external symbol __afxForceUSRDLL
1>test1.obj : error LNK2001: unresolved external symbol __afxForceUSRDLL
1>stdafx.obj : error LNK2001: unresolved external symbol __afxForceSTDAFX
1>test1.obj : error LNK2001: unresolved external symbol __afxForceSTDAFX
1>C:\Beps\test1\Debug\BEPSvdm.dll : fatal error LNK1120: 3 unresolved externals
1>Build log was saved at "file://c:\Beps\test1\test1\Debug\BuildLog.htm"
1>test1 - 7 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
j'y comprends absolument rien.
Merci de m'aider.
0
aurna Messages postés 184 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 26 novembre 2009 7
16 mai 2007 à 12:36
Slut,à ce point je sais koi dire,puisk je ne comprends pas le dernier post.
En fait je suis allée chercher dans google,j'ai trouvé que je pouvais mettre en commentaire la partie qui concerne DllMain,je l'ai fait,et les erreurs ont disparus,mais où j'ai trouvé cette solution,on disait qu'il ne suffit pas de mettre cette partie là en commentaire,il fallait ajouter un code qui sert de point d'entrée.Je ne sais comment écrire ce code.tu me diras peut etre comme dans ton post 3 qu'une Dll n'a pas besoin de point d'entrée.Je crois m'etre mal exprimée.La Dll exporte les fonctions,donc je dois écrire ces fonctions pour que l'application dont il s'agit puisse les utiliser.c'est donc ce k je suis en train de faire,et c'est là que je rencontre ces problèmes.
Merci de bien voulir m'aider.
Je reste à l'écoute
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
11 mai 2007 à 09:02
Voilà typiquement le genre de problème qu'on a quand on utilise cette merde de visual studio sans avoir les bases de la programmation C/C++ !
Ton problème viens du fait que tu ne sais pas (du moins c'est l'impression que tu donne) le programme VS lors de la "compilation". L'erreur qu'il te donne c'est qu'il y a des fonction déclaré mais non défini.
Tant qu'on ne saura pas quelle est la commande d'édition des liens, il est presque impossible de t'aider.
Mon conseil serait que tu prennes un cour/tutoriel de C et que tu compile à la main (en ligne de commande) des petits projets de 2 ou 3 sources.
-2