 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
andre Guest
|
Posted: Tue Jan 06, 2004 10:32 am Post subject: Qui peut m'aider à compiler ce programme de Microsoft ? |
|
|
Bonjour,
je dois miger un programme (founis par Microsoft, article Q284199) de
suppression de BAL en vbs/adsi vers c++ :
Ayant un besoin spécifique pour un serveur de messagerie Exchange, j'ai un
programme cpp à compiler mais je n'y arrive pas.
en fait, à la compilation, il m'indique aucune erreur mais impossible de
créer un executable car là, 5 erreurs apparaîssent :
<<<<<<<<<<
Linking ...
DAPIDel.obj : error LNK2001: unresolved external symbol _DAPIEnd@4
DAPIDel.obj : error LNK2001: unresolved external symbol _DAPIStartA@4
DAPIDel.obj : error LNK2001: unresolved external symbol _DAPIWriteA@28
DAPIDel.obj : error LNK2001: unresolved external symbol _DAPIFreeMemory@4
Debug/DAPIDel.exe : fatal error LNK1120: 4 unresolved externals
error executing link.exe
DAPIDel.exe - 5 error(s), 0 warning(0)
n'ayant jamais utilisé visualC++, pouvez vous m'aider ?
le fichier à compiler est dapidel.cpp
j'ai bien les librairies dapi.lib
remarque : Chez Microsoft, ils pourraient directement fournir un executable,
non ?
merci pour votre aide
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
//
// DAPIDel.cpp : Defines the entry point for the console application.
// Dapi.lib is the only additional library required to compile the code.
//
#include
#include <stdio.h>
#include <string.h>
#include <lmcons.h>
#include <tchar.h>
#include <dapi.h>
#include <dapimsg.h> // error codes
void DAPIDelObj(DAPI_HANDLE hDAPISession, char * szCN, char *
szObjectClass);
void ReportDAPIEvent(DAPI_EVENT* pDAPIEvent);
void main(int argc, char* argv[])
{
DAPI_HANDLE hDAPISession;
DAPI_EVENT* pDAPIEvent = NULL;
DAPI_PARMS DAPIParms = {0};
if (5 > argc)
{
printf("nDAPIDel ExchangeServerName ContainerDN CN ObjectClass");
printf("nnExample:");
printf("nDAPIDel myserver /O=org/OU=site/CN=recipients commonname
mailbox");
return;
}
else
{
printf("nExchange Server: %s", argv[1]);
printf("nBasePoint Container DN: %s", argv[2]);
printf("nCommon Name: %s", argv[3]);
printf("nObjectClass: %s", argv[4]);
}
// start DAPI for this session
//initialize the the DAPI Parms structure and the DAPI operation session
DAPIParms.dwDAPISignature = DAPI_SIGNATURE;
DAPIParms.dwFlags =
DAPI_EVENT_ALL|DAPI_MODIFY_REPLACE_PROPERTIES|DAPI_RAW_MODE ;
DAPIParms.pszDSAName = argv[1];
DAPIParms.pszBasePoint = argv[2];
DAPIParms.pszContainer = NULL;
DAPIParms.pszNTDomain = NULL;
DAPIParms.pszCreateTemplate = NULL;
DAPIParms.pAttributes = NULL;
pDAPIEvent = DAPIStart(&hDAPISession, &DAPIParms); //struct with DAPI
params
if(pDAPIEvent)
{
printf("nDAPIStart() returned %08x - check app eventlog",
pDAPIEvent->dwDAPIError);
ReportDAPIEvent(pDAPIEvent);
// Note: dwDAPIError < 0 does NOT necessarily mean DAPIStart failed
if (0==hDAPISession || INVALID_HANDLE_VALUE == hDAPISession) return;
}
else
printf("nDAPIStart() was successful");
DAPIDelObj(hDAPISession, argv[3], argv[4]);
DAPIEnd(&hDAPISession);
printf("nEND PROGRAM");
}
ATT_VALUE * AddStrAttr(_TINT i, LPCTSTR szClass, LPCTSTR szValue,
DAPI_ENTRY * dapiAttr, DAPI_ENTRY * dapiValues)
{
ATT_VALUE * AttName = &(dapiAttr->rgEntryValues[i]);
AttName->DapiType = DAPI_STRING8;
AttName->Value.pszValue = const_cast <LPTSTR> (szClass);
AttName->size = _tcslen(AttName->Value.pszValue);
AttName->pNextValue = NULL;
ATT_VALUE * AttValue = &(dapiValues->rgEntryValues[i]);
AttValue->DapiType = DAPI_STRING8;
AttValue->Value.pszValue = const_cast <LPTSTR> (szValue);
AttValue->size = _tcslen(AttValue->Value.pszValue);
AttValue->pNextValue = NULL;
return AttValue;
}
void DAPIDelObj(DAPI_HANDLE hDAPISession, char * szCN,
char * szObjectClass)
{
DAPI_EVENT* pDAPIEvent = NULL;
DAPI_ENTRY Attributes;
DAPI_ENTRY Values;
ATT_VALUE AttName[3];
ATT_VALUE AttValue[3];
int i=0;
printf("nIN DAPIDelObj()");
//set up the account information
Attributes.unAttributes = 2; //# of attributes
Attributes.ulEvalTag = TEXT_VALUE_ARRAY; //Value Type
Attributes.rgEntryValues = &AttName[0];
Values.unAttributes = 2; //# of attributes
Values.ulEvalTag = VALUE_ARRAY; //Value Type
Values.rgEntryValues = (ATT_VALUE*)&AttValue;
AddStrAttr( i++, "Obj-Class", szObjectClass, &Attributes, &Values);
AddStrAttr( i, "Directory Name", szCN, &Attributes, &Values);
// delete the mailbox
printf("nDeleting %s object /cn="%s"", szObjectClass, szCN);
pDAPIEvent = DAPIWrite(hDAPISession,
DAPI_WRITE_DELETE,
&Attributes,
&Values,
NULL,
NULL,
NULL);
if(pDAPIEvent)
{
// write FAILED
printf("nDAPIWrite ERROR %08x check app eventlog",
pDAPIEvent->dwDAPIError);
ReportDAPIEvent(pDAPIEvent);
}
else
printf("nDAPIWrite() was successful");
}
void ReportDAPIEvent(DAPI_EVENT* pDAPIEvent)
{
HANDLE hDAPIEventSource = RegisterEventSource(NULL,
TEXT("MSExchangeDSImp"));
ReportEvent(hDAPIEventSource,
(WORD)EVENTLOG_ERROR_TYPE,
0xFFFF,
pDAPIEvent->dwDAPIError,
NULL,
(WORD)pDAPIEvent->unSubst,
0,
(const char**) pDAPIEvent->rgpszSubst,
NULL);
DAPIFreeMemory(pDAPIEvent);
DeregisterEventSource(hDAPIEventSource);
}
[email]eric.andre (AT) oreka (DOT) com[/email]
Le bruit de la mer empêche les petits poissons de dormir...
|
|
| Back to top |
|
 |
Nicolas Aunai Guest
|
Posted: Tue Jan 06, 2004 10:39 am Post subject: Re: Qui peut m'aider à compiler ce programme de Microsoft ? |
|
|
andre a formulé la demande "Qui peut m'aider à compiler ce programme de
Microsoft ?" :
bill ?
--
Nico,
http://astrosurf.com/nicoastro
messenger : [email]nicolas_aunai (AT) hotmail (DOT) com[/email]
|
|
| Back to top |
|
 |
Raphael TOSTO Guest
|
Posted: Tue Jan 06, 2004 11:02 am Post subject: Re: Qui peut m'aider à compiler ce programme de Microsoft ? |
|
|
"andre" <eric.andre (AT) oreka (DOT) com> a écrit dans le message de
news:bte2nc$4sn$1 (AT) news-reader3 (DOT) wanadoo.fr...
| Quote: | Bonjour,
je dois miger un programme (founis par Microsoft, article Q284199) de
suppression de BAL en vbs/adsi vers c++ :
|
Tu es, à plus d'un titre hors sujet. Ce que je puis dire : tu as bêtement un
problème de link.
Essayes plutot sur :
- fr.comp.os.ms-windows.programmation
- microsoft.public.fr.vc
| Quote: | Ayant un besoin spécifique pour un serveur de messagerie Exchange, j'ai un
programme cpp à compiler mais je n'y arrive pas.
en fait, à la compilation, il m'indique aucune erreur mais impossible de
créer un executable car là, 5 erreurs apparaîssent :
Linking ...
DAPIDel.obj : error LNK2001: unresolved external symbol _DAPIEnd@4
DAPIDel.obj : error LNK2001: unresolved external symbol _DAPIStartA@4
DAPIDel.obj : error LNK2001: unresolved external symbol _DAPIWriteA@28
DAPIDel.obj : error LNK2001: unresolved external symbol _DAPIFreeMemory@4
Debug/DAPIDel.exe : fatal error LNK1120: 4 unresolved externals
error executing link.exe
DAPIDel.exe - 5 error(s), 0 warning(0)
n'ayant jamais utilisé visualC++, pouvez vous m'aider ?
le fichier à compiler est dapidel.cpp
j'ai bien les librairies dapi.lib
|
|
|
| Back to top |
|
 |
Loïc Joly Guest
|
Posted: Tue Jan 06, 2004 8:23 pm Post subject: Re: Qui peut m'aider à compiler ce programme de Microsoft ? |
|
|
Raphael TOSTO wrote:
| Quote: | "andre" <eric.andre (AT) oreka (DOT) com> a écrit dans le message de
news:bte2nc$4sn$1 (AT) news-reader3 (DOT) wanadoo.fr...
Bonjour,
je dois miger un programme (founis par Microsoft, article Q284199) de
suppression de BAL en vbs/adsi vers c++ :
Tu es, à plus d'un titre hors sujet. Ce que je puis dire : tu as bêtement un
problème de link.
Essayes plutot sur :
- fr.comp.os.ms-windows.programmation
- microsoft.public.fr.vc
|
Je ne pense pas que la question soit vraiment hors sujet : Le message
d'erreur en question est évidemment spécifique à un compilateur, comme
tous les messages de diagnostic, mais ça ne veut pourtant pas dire (au
contraire) qu'il ne faut jamais les écrire quand on poste un problème
dans les news.
Le problème sous-jacent est lui un problème de pur C++, indépendant du
contexte dans lequel le programme est écrit. Je suis d'accord que le
contenu du programme en question est de la programmation système qui
elle est hors-sujet.
En deux mots : Tu as effectivement un problème de link : Le code que tu
compiles n'est pas auto-suffisant, il a besoin d'un autre code, déjà
compilé, pour fonctionner. Ce code est souvent sous forme de fichiers
bibliothèque (.lib sous VC++) ou de fichier objet (.obj sous VC++).
Il faut indiquer au compilateur d'utiliser pour la phase de liaison (le
moment ou le lieur (linker) assemble tous les .lib et .obj indiqués) le
fichier approprié (qui doit être indiqué sur le site de Microsoft, ou
dans la doc des fonctions pour lesquelles le message d'erreur apparaît).
Si tu veux plus d'information sur comment réaliser cette tâche, je te
conseille de te tourner vers un des forums précédemment cités.
--
Loïc
|
|
| Back to top |
|
 |
andre Guest
|
Posted: Thu Jan 08, 2004 7:08 am Post subject: Re: Qui peut m'aider à compiler ce programme de Microsoft ? |
|
|
En effet, j'ai réussi à ajouter la librairie au programme et ça marche.
c'était tout simple, mais quand on sais pas...
Merci pour l'aide.
"Loïc Joly" <loic.actarus.joly (AT) wanadoo (DOT) fr> a écrit dans le message de news:
btf58i$1kl$1 (AT) news-reader5 (DOT) wanadoo.fr...
| Quote: | Raphael TOSTO wrote:
"andre" <eric.andre (AT) oreka (DOT) com> a écrit dans le message de
news:bte2nc$4sn$1 (AT) news-reader3 (DOT) wanadoo.fr...
Bonjour,
je dois miger un programme (founis par Microsoft, article Q284199) de
suppression de BAL en vbs/adsi vers c++ :
Tu es, à plus d'un titre hors sujet. Ce que je puis dire : tu as
bêtement un
problème de link.
Essayes plutot sur :
- fr.comp.os.ms-windows.programmation
- microsoft.public.fr.vc
Je ne pense pas que la question soit vraiment hors sujet : Le message
d'erreur en question est évidemment spécifique à un compilateur, comme
tous les messages de diagnostic, mais ça ne veut pourtant pas dire (au
contraire) qu'il ne faut jamais les écrire quand on poste un problème
dans les news.
Le problème sous-jacent est lui un problème de pur C++, indépendant du
contexte dans lequel le programme est écrit. Je suis d'accord que le
contenu du programme en question est de la programmation système qui
elle est hors-sujet.
En deux mots : Tu as effectivement un problème de link : Le code que tu
compiles n'est pas auto-suffisant, il a besoin d'un autre code, déjà
compilé, pour fonctionner. Ce code est souvent sous forme de fichiers
bibliothèque (.lib sous VC++) ou de fichier objet (.obj sous VC++).
Il faut indiquer au compilateur d'utiliser pour la phase de liaison (le
moment ou le lieur (linker) assemble tous les .lib et .obj indiqués) le
fichier approprié (qui doit être indiqué sur le site de Microsoft, ou
dans la doc des fonctions pour lesquelles le message d'erreur apparaît).
Si tu veux plus d'information sur comment réaliser cette tâche, je te
conseille de te tourner vers un des forums précédemment cités.
--
Loïc
|
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|