Erreur sous Visual C++ 2008

Signaler
Messages postés
59
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2008
-
Messages postés
59
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2008
-
Bonjour a tous!!

Je travaille sous Visual C++ que je ne connais pas encore très bien...j'ai une erreur que je ne comprend pouvez me l'expliquer svp!!

1>cl : Ligne de commande warning D9035 : l'option 'Wp64' est désapprouvée et sera supprimée dans une version ultérieure

Merci d'avance.

Bien à vous...

18 réponses

Messages postés
14867
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
24 novembre 2020
93
Hello,
A priori, la détection de la portabilité 64 bits est obsolète. Dans les options de ton projet, tu peux donc la supprimer

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
Messages postés
59
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2008

Ok merci sympa!!Voici une erreur de résolu!!

Bien à vous...
Messages postés
59
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2008

REBonjour a tous,

Voila j'ai ce code :

#define _CRT_SECURE_NO_DEPRECATE
#include "ModuleInterface.h"
#include <vector>
#include <string>

typedef std::pair<std::string, std::string> DeviceInfo;
std::vector<DeviceInfo> g_availableDevices;

MODULE_API long GetModuleVersion();

long GetModuleVersion()
{
return MODULE_INTERFACE_VERSION;
}

MODULE_API long GetDeviceInterfaceVersion()
{
return DEVICE_INTERFACE_VERSION;
}

void AddAvailableDeviceName(const char* name, const char* descr)
{
std::vector<DeviceInfo>::const_iterator it;
for (it=g_availableDevices.begin(); it!=g_availableDevices.end(); ++it)
if (it->first.compare(name) == 0)
return; // already there

// add to the list
g_availableDevices.push_back(std::make_pair(name, descr));
}

MODULE_API unsigned GetNumberOfDevices()
{
return (unsigned) g_availableDevices.size();
}

MODULE_API bool GetDeviceName(unsigned deviceIndex, char* name, unsigned bufLen)
{
if (deviceIndex >= g_availableDevices.size())
return false;

if (g_availableDevices[deviceIndex].first.length() >= bufLen)
return false; // buffer too small, can't truncate the name

strcpy(name, g_availableDevices[deviceIndex].first.c_str());
return true;
}

MODULE_API bool GetDeviceDescription(unsigned deviceIndex, char* description, unsigned bufLen)
{
if (deviceIndex >= g_availableDevices.size())
return false;

strncpy(description, g_availableDevices[deviceIndex].second.c_str(), bufLen-1);
return true;
}

Quand je fais "Générer la solution" il me met ces erreurs :

1>ModuleInterface.cpp
1>c:\program files\stage\micro-manager1.2\mmdevicekit-win-26_00\mmdevice\moduleinterface.cpp(36) : warning C4273: 'GetModuleVersion' : liaison DLL incohérente
1> c:\program files\stage\micro-manager1.2\mmdevicekit-win-26_00\mmdevice\moduleinterface.h(65) : voir la définition précédente de 'GetModuleVersion'
1>c:\program files\stage\micro-manager1.2\mmdevicekit-win-26_00\mmdevice\moduleinterface.cpp(41) : error C2491: 'GetDeviceInterfaceVersion' : définition de fonction dllimport non autorisée
1>c:\program files\stage\micro-manager1.2\mmdevicekit-win-26_00\mmdevice\moduleinterface.cpp(57) : error C2491: 'GetNumberOfDevices' : définition de fonction dllimport non autorisée
1>c:\program files\stage\micro-manager1.2\mmdevicekit-win-26_00\mmdevice\moduleinterface.cpp(62) : error C2491: 'GetDeviceName' : définition de fonction dllimport non autorisée
1>c:\program files\stage\micro-manager1.2\mmdevicekit-win-26_00\mmdevice\moduleinterface.cpp(74) : error C2491: 'GetDeviceDescription' : définition de fonction dllimport non autorisée

Pouvez m'aider et me dire ce qui ne va pas ???
Merci d'avance!!




Bien à vous...
Messages postés
14867
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
24 novembre 2020
93
Tu as du mal configurer ta dll. Il faut que MODULE_API soit déclaré comme dllexport et non dllimport

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
Messages postés
59
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2008

Merci!!
Mais comment tu fais?

Bien à vous...
Messages postés
14867
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
24 novembre 2020
93
Dans ton fichier.h

#ifdef USE_DLL
#define MODULE_API __declspec(dllexport)
#else
#define MODULE_API __declspec(dllimport)
#endif

Dans les propriétés de ton projet, rajouter USE_DLL dans la définition du préprocesseur (je n'ai pas Visual 2008 sous la main, désolé)

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
Messages postés
59
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2008

Merci beaucoup!!
Désolée mais maintenant il me met ça :

1>------ Début de la génération : Projet : Adaptateur, Configuration : Debug Win32 ------

1>Compilation en cours...

1>ModuleInterface.cpp

1>PI_GCS.cpp

1>Génération de code en cours...

1>Compilation du manifeste en ressources en cours...

1>Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0

1>Copyright (C) Microsoft Corporation. All rights reserved.

1>Édition des liens en cours...

1> Création de la bibliothèque Debug\Adaptateur.lib et de l'objet Debug\Adaptateur.exp

1>MSVCRTD.lib(crtexe.obj) : error LNK2019: symbole externe non résolu _main référencé dans la fonction ___tmainCRTStartup

1>Debug\Adaptateur.exe : fatal error LNK1120: 1 externes non résolus

1>Le journal de génération a été enregistré à l'emplacement "file://c:\Program Files\Stage\Micro-Manager1.2\MMDeviceKit-win-26_00\MMDevice\Debug\BuildLog.htm"

1>Adaptateur - 2 erreur(s), 0 avertissement(s)

======== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========

Bien à vous...
Messages postés
14867
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
24 novembre 2020
93
ok...j'm'a gourré!
En fait, tu n'as pas de projet DLL, tu as un main avec des fichiers.h et .cpp. A quoi te sert alors le MODULE_API? Tu remarqueras que les erreurs de ton 3e message renvoient aux fonctions qui l'utilisent.Tu peux le supprimer? Et oublies mon dernier message du coup (sorry...)

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
Messages postés
59
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2008

En fait j'ai modifié l'un des fichiers...j'ai fait un projet a partir de fichiers existants donc je ne pense pas que je puisse le supprimer...il est utile..pour etre honnete je sais pas a quoi il sert...??

Bien à vous...
Messages postés
14867
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
24 novembre 2020
93
Perso, je pense que tu peux le supprimer car ce type de constante est valable pour des projets de type dll

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
Messages postés
59
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2008

Oui mais voici le .h je peux pas l'enlever...

#ifndef

_MODULE_INTERFACE_H_
#define

_MODULE_INTERFACE_H_
/*#ifdef USE_DLL

#define MODULE_API __declspec(dllexport)

#else

#define MODULE_API __declspec(dllimport)

#endif

*/

#ifdef

WIN32

#ifdef MODULE_EXPORTS
#define MODULE_API __declspec(dllexport)

#else

#define MODULE_API
__declspec(
dllimport)

#endif#else

#define MODULE_API

#endif

 

#define

MM_MODULE_ERR_OK 1000
#define

MM_MODULE_ERR_WRONG_INDEX 1001
#define

MM_MODULE_ERR_BUFFER_TOO_SMALL 1002
///////////////////////////////////////////////////////////////////////////////

// header version

// NOTE: If any of the exported module API calls changes, the interface version

// must be incremented

#define

MODULE_INTERFACE_VERSION 4
const

char*
const LIB_NAME_PREFIX =
"mmgr_dal_";
#include

"MMDevice.h"///////////////////////////////////////////////////////////////////////////////

// Exported module interface

///////////////////////////////////////////////////////////////////////////////

extern

"C" {MODULE_API MM::Device* CreateDevice(

const
char* name);MODULE_API

void DeleteDevice(MM::Device* pDevice);MODULE_API

long GetModuleVersion();MODULE_API

long GetDeviceInterfaceVersion();MODULE_API

unsigned GetNumberOfDevices();MODULE_API

bool GetDeviceName(
unsigned deviceIndex,
char* name,
unsigned bufferLength);MODULE_API

bool GetDeviceDescription(
unsigned deviceIndex,
char* name,
unsigned bufferLength);

/*** Intializes the list of available devices and perhaps other global initialization tasks.

* The method may be called any number of times during the uManager session.

*/

MODULE_API

void InitializeModuleData();}

// corresponding function pointers

typedef

void (*fnDeleteDevice)(MM::Device*);
typedef

MM::Device* (*fnCreateDevice)(
const
char*);
typedef

long (*fnGetModuleVersion)();
typedef

long (*fnGetDeviceInterfaceVersion) ();
typedef

unsigned (*fnGetNumberOfDevices)();
typedef

bool (*fnGetDeviceName)(
unsigned,
char*,
unsigned);
typedef

bool (*fnGetDeviceDescription)(
unsigned,
char*,
unsigned);
typedef

void (*fnInitializeModuleData)();
// functions fore internal use

void

AddAvailableDeviceName(
const
char* deviceName,
const
char* description =
"Description N/A"); 

#endif

//_MODULE_INTERFACE_H_

Bien à vous...
Messages postés
59
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2008

Peut etre qu'il fo que je fasse un projet DLL?? Mais comment faire??

Bien à vous...
Messages postés
14867
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
24 novembre 2020
93
Je ne comprends plus, là...
Typiquement, le fichier que tu me montre sert d'interface à une dll...mais tu n'utilise pas de dll...
Qu'as tu fais exactement? Tu as copier/coller ce fichier pour le mettre à ton projet? Tu peux donc le modifier?
Sinon, dans les options de préprocesseur (ou dans ton prog), tu définis la macro MODULE_EXPORTS

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
Messages postés
59
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2008

En fait j'ai téléchargé un DDK (qui contient des .h et .cpp) que j'ai modifié et je voudaris savoir coomment on fait pour le recompiler??

Bien à vous...
Messages postés
14867
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
24 novembre 2020
93
Salut,
Eh ben...tu t'attaques à du gros, toi
Généralement, on évite de modifier un DDK, on l'utilise tel quel et on se branche dessus.
Si tu veux, néanmoins, le recompiler, il faut que tu regarde la doc du DDK

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
Messages postés
59
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2008

Ben en fait j'ai pas le choix c'est mon sujet de stage... Alors j'ai regardé la doc et j'ai fait comme ils disent et tout mais ca ne marche toujours pas il me met toujours les meme erreurs.... Je comprend pas pourquoi!! Y a un exemple et j'ai fait la meme chose lui il peut etre générer mais pas le mien...c'est bizarre quand meme...!!!
Bien à vous...
Messages postés
59
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2008

Bien à vous...
Messages postés
59
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2008

En fait je n'ai pas modifier la DDK j'ai rajouté quelques fichiers...
Bien à vous...