none
Problème de classed non static RRS feed

  • Question

  • Bonjour tous le monde! J'ai un problème un peu énervant si je eut me permette. J'utilise Visual Studio 2008 et je créer un projet en c++. Le porjet est une dll vide, de l'application Win32. J'avais jamais trop compris comment on créer une dll en c++, mais maintenant je sais un peut près.

    Mais voici mon problème. Dans ma solution il y a deux projets vide, le premier (le principale) est une dll qui me permettra de faciliter le développement de mes applications. La deuxième est un test pour voir si la dll fonctionne sans erreur. Le but que je suis en train de faire est:

    code dll: (code .hpp)

    #ifndef CODEDLL_HPP
    #define CODEDLL_HPP

    namespace Dansdll
    {
    class Init
    {
    public:
         Init();
         ~Init();

    void Initialisation();
    };
    };
    #endif

    code dll: (code .cpp)

    namespace Dansdll
    {
    void Init::Initialisation()
    {
     // Il n'y a rien dedans car c'est juste pour un test
    }
    };


    code 2nd Projet: (code .hpp)

    #ifndef main_HPP
    #define main_HPP


    class Test
    {
    public:
        Test();
        ~Test();

        static void DllInit();
    };
    #endif

    code 2nd Projet (code .cpp)

    #include <iostream>

    #include "main.hpp"
    #include "codedll.hpp"


    using namespace Dansdll;


    int main(void)
    {
        Test:Big SmilellInit();
    }
    void Test:Big SmilellInit()
    {
        std::cout << "Initialisation" << std::endl;
        Init::Initialisation();          // C'est la ou il y a une erreur.**
    }

    ** Erreur    1    error C2352: 'Dansdll::Init::Initialisation' : appel non conforme d'une fonction membre non static


    La voilà mon problème. J'ai pensée à mettre static avant void de Initialisation();

    Mais c'est du charabia et l'aide msdn ne m'apporte pas la solution.

    Erreur    2    error LNK2019: symbole externe non résolu "public: static void __cdecl Dansdll::Init::Initialisation(void)" (?Initialisation@Init@Dansdll@@SAXXZ) référencé dans la fonction "public: static void __cdecl Test:Big SmilellInit(void)" (?DllInit@Test@@SAXXZ)    main.obj

    Erreur    3    fatal error LNK1120: 1 externes non résolus
    lundi 16 juin 2008 22:19

Toutes les réponses

  • Bonjour,

     

    C'est normal, il faut créer une instance de Init car la méthode Initialisation() est une méthode membre non statique...

     

    Cordialement

     

    PS : Pensez à mettre votre code dans du : "Code snippet" (bouton Mark Code Block) afin d'éviter les smileys et problèmes d'indentations...
    mardi 17 juin 2008 21:04
    Modérateur