webForumDet fria alternativet

hur ladda dll?

7 svar · 374 visningar · startad av puhbjörn

puhbjörnMedlem sedan juni 2001370 inlägg
#1

Hur gör jag för att ladda en dll fil ?

SPiNMedlem sedan mars 20007 896 inlägg
#2

Om jag inte missminner mig...

#import "MyDLL.dll";
...
puhbjörnMedlem sedan juni 2001370 inlägg
#3

När jag försöker kompilera så kan den inte hitta dll filen, jag har lagt den i mappen med källkoden, release och debug men det funkar inte så var ska jag lägga den?

nikoMedlem sedan juni 20022 599 inlägg
#4

så var ska jag lägga den

Nånstans i pathen borde funka bra. I \system32, tex. Fast en annan fråga: Är det en Windows-dll eller en ActiveX-dll du försöker länka? #import förutsätter nog att filen har ett inbyggt typelib (ActiveX-dll).

puhbjörnMedlem sedan juni 2001370 inlägg
#5

det är en win dll som jag gör själv. Hur gör jag en activex dll då?

detta är felmeddelandet som jag får:
fatal error C1083: Cannot open type library file: 'game.dll': Ett fel inträffade när ett typbibliotek eller en DLL-fil skulle läsas.

nikoMedlem sedan juni 20022 599 inlägg
#6

Det finns två sätt att länka in en Windows-dll: explicit och implicit länkning.

Explicit länkning:

typedef void (*LPDINFUNKTION)(void);
LPDINFUNKTION Dinfunktion;
HINSTANCE hDll;
hDll = LoadLibrary("<eventuell sökväg>\dindll.dll");
if (hDll) {
	//Dll:en är laddad. Hämta ut funktionen.
	Dinfunktion = (LPDINFUNKTION)GetProcAddress(hDll,"Dinfunktion");
	//Anropa funktionen om den hittades.
	if(Dinfunktion)
		Dinfunktion();
	else
		//Funktionen gick inte att ladda.
	//Ladda ur dll:en om du inte behöver den mer.
	FreeLibrary(hDll);
}
else
	//dll:en gick inte att ladda.

.. om det finns en void-funktion Dinfunktion utan inparametrar i dll:en som du vill komma åt. Du måste alltså ändra
definitionen av LPDINFUNKTION så att det stämmer med hur din funktion ser ut. (Sen beror det lite på hur du definierat dina
funktioner i dll:en. Om du tex använder __stdcall utan def-fil så kan det bli problem.)

Eftersom du själv gjort dll:en så kan du också använda explicit länkning, dvs du tar med dll:ens header- och lib-fil när du
kompilerar och deklarerar funktionerna du vill importera som __declspec(dllimport) (svårare att visa med exempel).

Hur gör jag en activex dll då?

Det beror på miljön/kompilatorn du använder. Det brukar finnas en projekttyp som heter COM- eller ActiveX-Dll.

puhbjörnMedlem sedan juni 2001370 inlägg
#7

Det beror på miljön/kompilatorn du använder. Det brukar finnas en projekttyp som heter COM- eller ActiveX-Dll.

Jag använder Visual C++ 6.0.

nikoMedlem sedan juni 20022 599 inlägg
#8

Jag använder Visual C++ 6.0.

Jag också.

135 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)