salut Je ne suis pas un développeur C++ et j'essaye de compiler l'application de quelqu'un d'autre. La construction réussit, mais je reçois 5 avertissements 'inconsistent dll linkage'.compiler quelqu'un d'autre vs C++ app - lien incohérent
La DLL se construit mais ne fonctionne pas dans le même scénario que la DLL existante. il n'y a eu aucun changement de code.
après quelques googler, je suppose qu'il doit faire avec cela, trouvé dans le fichier d'en-tête:
#ifdef CPLAPPLET_PROGRAM_EXPORTS
#define CPLAPPLET_PROGRAM_API __declspec(dllexport)
#else
#define CPLAPPLET_PROGRAM_API __declspec(dllimport)
#endif
et il y a un commentaire dans le code qui dit CPLAPPLET_PROGRAM_EXPORTS est défini sur la ligne de commande.
Les avertissements se produisent sur les fonctions exportées, comme ceci:
HRESULT _stdcall CCplApplet_PROGRAM::DllUnregisterServer()
{
// our code added here
return 0;
}
quelqu'un peut me diriger dans la bonne direction ici?
merci.
EDIT pour répondre aux commentaires:
J'ai créé un projet C++ dll win32 vs 2008, et je l'ai ajouté leur .cpp, .h et fichiers .def à ce projet, mais c'est tout. Au lieu de cliquer simplement sur 'build', je me demande si je dois faire quelque chose de spécifique avec le fichier .def ou quelque chose comme ça?
le fichier d'en-tête définit les méthodes comme ceci:
class CPLAPPLET_LNK_PROGRAM CCplApplet_PROGRAM {
public:
static LONG APIENTRY CPlApplet(HWND hWnd, UINT uMsg, LONG lParam1, LONG lParam2);
private:
...
HRESULT _stdcall DllUnregisterServer(void);
...
};
le fichier def:
LIBRARY "CplApplet_PROGRAM"
EXPORTS DllUnregisterServer PRIVATE
Développez-vous leur solution? Est-il possible que vous ayez perdu une spécification de fichier .def pour la ligne de liaison? – Rup
Comment 'DllUnregisterServer' est-il défini dans le fichier d'en-tête? Utilisez-vous 'la classe CPLAPPLET_PROGRAM_API CCplApplet_PROGRAM ...' dans l'en-tête fie? Aussi, si vous construisez à partir de VS, le drapeau est-il défini? – Asha
merci - J'ai modifié pour répondre à ces questions. Asha, de quel drapeau parlez-vous? –