Bonjour tout le monde,

Je n'arrive pas à utiliser une dll lorsque je l'encapsule dans un espace nom. C'est comme si les liaisons se perdaient :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
#ifdef ROOTERLIB_EXPORTS
#define ROOTERLIB_API  __declspec(dllexport)
#else
#define ROOTERLIB_API __declspec(dllimport)
#endif //ROOTERLIB_EXPORTS
 
    class ROOTERLIB_API CRooterLib {
    public:
        CRooterLib(void);       
    };

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
#include "stdafx.h"
#include "RooterLib.h"
#include <iostream>
 
using namespace std;
CRooterLib::CRooterLib(){    }
crée bien un .lib et dll que je peux utiliser dans un programme. Alors que :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
#ifdef ROOTERLIB_EXPORTS
#define ROOTERLIB_API  __declspec(dllexport)
#else
#define ROOTERLIB_API __declspec(dllimport)
#endif //ROOTERLIB_EXPORTS
 
namespace MaClasse{
    class ROOTERLIB_API CRooterLib {
    public:
        CRooterLib(void);       
    };
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
#include "stdafx.h"
#include "RooterLib.h"
#include <iostream>
 
using namespace std;
namespace MaClasse{
    CRooterLib::CRooterLib(){    }   
}
ne fonctionne pas. Lorsque j'essaye d'utiliser la DLL :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
using namespace std;
using namespace MaClasse;
int main()
{
    int a;
    CRooterLib test;
}

J'obtiens les erreurs suivantes :

Erreur LNK2019 symbole externe non rÚsolu "__declspec(dllimport) public: __cdecl MaClasse::CRooterLib::CRooterLib(void)" (__imp_??0CRooterLib@MaClasse@@QEAA@XZ) rÚfÚrencÚ dans la fonction main Utilisateur D:\Programmation\FramworkDLL\Utilisateur\Utilisateur\Utilisateur.obj 1 Link
Erreur LNK1120 1 externes non rÚsolus Utilisateur D:\Programmation\FramworkDLL\Utilisateur\x64\Debug\Utilisateur.exe 1 Link


Auriez-vous une explication?