Avatar billede tokelil Nybegynder
06. september 2003 - 18:30 Der er 7 kommentarer og
2 løsninger

Lave dll med MFC understøttelse

Jeg vil gerne lave et plugin til min mp3 afspiller (Quintessential Player - http://www.quinnware.com/) og har hente PDK til den. PDK indeholder nogle samples til til de forskellige typer projekter, som er lavet i VC++ 6 men uden MFC.

Hvordan kan jeg komme til at bruge MFC bibliotekerne i sådan en dll?

Jeg har prøvet:
#include <afx.h>
#include <afxsock.h>

Og forskellige andre includes, men får følgende fejlbesked:
mfcs42d.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in QCDGeneralDLL.obj
mfcs42d.lib(dllmodul.obj) : warning LNK4006: _DllMain@12 already defined in QCDGeneralDLL.obj; second definition ignored
  Creating library Debug/QCDGeneral.lib and object Debug/QCDGeneral.exp
Debug/QCDGeneral.dll : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.
Avatar billede jpk Nybegynder
08. september 2003 - 08:55 #1
Hmm, du skal muligvis bruge disse includes:

#include <afxwin.h>  // MFC core and standard components
#include <afxext.h>  // MFC extensions


Har du valgt at bruge MFC i dit projekt?
Project->Settings, fanebladet General, vælg enten "Use MFC in a shared DLL" eller "Use MFC in a static library".

Dette er nødvendigt for at det virker!

Endelig kan det også være du har nogle andre includes (std Win) som skal fjernes til fordel for MFC...
Avatar billede tokelil Nybegynder
08. september 2003 - 15:37 #2
Jeg har prøvet at udkommentere #include <windows.h> som er den eneste include fil projektet bruger, ud over filer der hører til projektet, og sat <afx.h> og de 2 du nævnte ind i stedet. Samt sat compileren til at bruge mfc (var den sat til i forvejen), men jeg får stadig samme fejlmeddelse. :-(
Avatar billede jpk Nybegynder
08. september 2003 - 16:26 #3
Har du lavet rebuild også?
Det er ikke altid nok bare at kompilere, nogle gange skal man vælge "Rebuild All" efter sådanne ændringer...
Avatar billede tokelil Nybegynder
08. september 2003 - 16:44 #4
Ja... Prøvede lige;
#include <afx.h>
// #include <windows.h>

og får samme fejl selv med rebuild all, mens:
// #include <afx.h>
#include <windows.h>

Compiler fint... Weird.

(Prøvede også med:
#include <afx.h>
#include <afxwin.h>  // MFC core and standard components
#include <afxext.h>  // MFC extensions
)
Avatar billede killer_bee Nybegynder
09. september 2003 - 16:13 #5
for at lave en dll med MFC understøtelse gør følgende:
File->New-> vælg 'MFC AppWizzard (dll)' giv din dll navn og klik ok.. så kan du også vælge om MFC ska være Static link elle Shared
Avatar billede killer_bee Nybegynder
09. september 2003 - 16:14 #6
P.S. jeg gætter på at det projekt du har oprettet er en 'Win32 DyamicLink Lybrary' typen?
Avatar billede tokelil Nybegynder
09. september 2003 - 16:23 #7
Jaja ved jeg godt... Problemmet er jo at jeg allerede har et projekt (fra pdk) som ikke bruger MFC og vil have det overført så det bruger MFC.
Avatar billede killer_bee Nybegynder
09. september 2003 - 16:29 #8
det har jeg nemlig selv haft problemer med.. og til sids gav jeg op og 'kopierede' koden i et nyt projekt...
Avatar billede tokelil Nybegynder
09. september 2003 - 17:19 #9
Er faktisk det at kopiere koden ind i et nyt projekt som jeg ikke har kunnet finde ud af. Men nu har jeg heldigvis luret det (Har taget mig en krig :-(), så tak for hjælpen!
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