Avatar billede Simon Praktikant
18. december 2003 - 11:37 Der er 6 kommentarer og
1 løsning

Klasse i en dll i MFC

Jeg vil gerne lave en dll, som indeholder en klasse.
Det har jeg fået til at virke, men problemet er bare at jeg kun kan kalde de funktioner, hvor body'en ligger inde i header-filen

header-fil:
----------------------------------------
class Klasse2
{
public:
    Klasse2::Klasse2(){}
    void Klasse2::denne_funktion_virker(void)
    {
    }
    void Klasse2::denne_funktion_virker_IKKE(void);
};
----------------------------------------

cpp-fil:
----------------------------------------

void Klasse2::denne_funktion_virker_IKKE(void)
{
}
----------------------------------------

Som ovenstående kode viser, får jeg lov til at kalde de funktioner, hvor body'en er beskrevet i selve header-filen. Men der hvor body'en ligger i en cpp-fil virker det ikke. Når jeg builder dll'en får jeg ingen fejl, ved nogen af funktionerne.
Når jeg efterfølgende kalder funktionen der er beskrevet i cpp-filen får jeg følgende fejl:

---"test.obj : error LNK2001: unresolved external symbol "public: void __thiscall Klasse2::denne_funktion_virker_IKKE(void)" (?denne_funktion_virker_IKKE@Klasse2@@QAEXXZ)"---

(jeg bruger visual studio 6.0)

mvh
Simon
Avatar billede killer_bee Nybegynder
18. december 2003 - 11:50 #1
har du tilføjet .cpp file til din DLL projekt?
Avatar billede killer_bee Nybegynder
18. december 2003 - 11:51 #2
det du siger i din DLL er sikkert #inclide "Klasse2.h" .. men du skal også går ind i Project->Add to Project-> Files ... og tilføje Klasse2.cpp
Avatar billede killer_bee Nybegynder
18. december 2003 - 21:26 #3
feedback?
Avatar billede Simon Praktikant
19. december 2003 - 04:21 #4
hej, undskyld ventetiden.
Jeg havde tilføjet .cpp til mit projekt. I mellemtiden har jeg selv fundet fejlen. Det var min fejlt, idet jeg havde glemt at tilføje følgende kode, i dll'ens headerfil.

-----------------------------------------------------
#ifdef KLASSE2_I_DLL_EXPORTS//bliver definere i dll'ens cpp-fil lige inden denne header-fil includeres
#define KLASSE2_I_DLL_API __declspec(dllexport)//kommer der til at stå når dll'en buildes
#else
#define KLASSE2_I_DLL_API __declspec(dllimport)//kommer der til at stå når dll'en skal anvendes af andre programmer
#endif
------------------------------------------------------
mvh Simon
Avatar billede killer_bee Nybegynder
19. december 2003 - 09:11 #5
så har det jeg skrev ikke været til stor hjælp.. vil du så ikke have point tilbage??
Avatar billede Simon Praktikant
19. december 2003 - 14:58 #6
Behold bare de point. Det var jo ikke forkert det du skrev, da det ofte kan være selve fejlen....måske andre der læser det kan have gavn af det.
Avatar billede killer_bee Nybegynder
20. december 2003 - 15:41 #7
:o) .. så takker jeg ..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester