[VS 2005 e c++]
aurna
Messages postés
184
Date d'inscription
Statut
Membre
Dernière intervention
-
aurna Messages postés 184 Date d'inscription Statut Membre Dernière intervention -
aurna Messages postés 184 Date d'inscription Statut Membre Dernière intervention -
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.
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:
- [VS 2005 e c++]
- Money 2005 - Télécharger - Comptabilité & Facturation
- É majuscule - Guide
- Udp vs tcp - Guide
- Code erreur 2005-0003 - Forum Jeux vidéo
- Realtek 8822ce wireless lan 802.11ac pci-e nic ✓ - Forum PC portable
8 réponses
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.
Il yavait juste conflit dans la declaration de la librerie de l' MFC.
Merci encore.
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 ...
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.
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.
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!
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!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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.
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.
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
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
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.
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.