19. august 2003 - 19:54
Der er
21 kommentarer og 1 løsning
dll i c++
ARGH det her irritere mig.... hvordan laver man en dll.. bare en man kan kalde der kan lave en cout... det er ik vigtigt hvad den kan bare der er lidt foklaring.. /madman
Annonceindlæg fra Publicis Sapient
19. august 2003 - 19:55
#1
Hvilken compiler ? (det er compiler specifikt !)
19. august 2003 - 19:55
#2
arr dev c++
19. august 2003 - 19:56
#3
men hvis jeg laver en dll.... så kan man kalde den fra alle programerings sprog der udenstøtter dll'er ik ...
19. august 2003 - 19:57
#4
Jo. Incl. VB ! :-)
19. august 2003 - 19:59
#5
dev-cpp - prøv med: new project DLL
19. august 2003 - 19:59
#6
fint det er fatisk i ibasic jeg skal bruge det... eller en kammerat skal =) han har nogle problemer med at finde en god dll til at sende over netværk med... altså som send() i c++.. og så kunne jeg også lige prøve lidt dll programering =)
19. august 2003 - 20:00
#7
Jeg har de manuelle gcc kommandoer til at gøre det med, hvis du ikke kan få det til at virke. Men de er lidt langhårede så prøv lige the dev-cpp way først.
19. august 2003 - 20:02
#8
ja det er ik noget problem at lave en dll der er tom har du dev-cpp fordi hvor meget af det der står der i er nødvendigt... jeg bruger version(4.9.8.0)
19. august 2003 - 20:02
#9
Jeg testede lige selv dev-cpp. Det ser vist OK ud. Den laver selv en export af alle symboler, men det er sikkert også godt nok til at starte med.
19. august 2003 - 20:03
#10
de der switch hvad skal der gøre godt for
19. august 2003 - 20:05
#11
men kan jeg ik noget som: DllClass::DllClass(SOCKET sock, char *data) { send(sock,data,strlen(data),0); }
19. august 2003 - 20:05
#12
Den forudsætter at du vil lave en klasse. Og ikke nogle C funktioner. Ellers er det meget simpelt. Alt det der står DLLIMPORT foran er det der er DLL'ens eksterne interface. Du kan sagtens slette i det der er der og lave dit eget.
19. august 2003 - 20:06
#13
Men hold snitterne fra DllMain.
19. august 2003 - 20:10
#14
send er ikke en særlig objektorienteret ting, så jeg tror at du helt skal droppe klasser og bare lave nogle funktioner.
19. august 2003 - 20:11
#15
hvordan det ??? en klasse er fx main() ik
19. august 2003 - 20:11
#16
Jeg har et lille eksempel. Ganske vist til MS VC++ men du kan nok konvertere: FileManip.h: #ifdef FILEMANIP_EXPORTS #define FILEMANIP_API __declspec(dllexport) #else #define FILEMANIP_API __declspec(dllimport) #endif extern "C" { FILEMANIP_API void WINAPI FileManip(const char *oldfilename, const char *newfilename); } FileManip.cpp: #include "stdafx.h" #include "FileManip.h" BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } #include <stdio.h> #include <string.h> FILEMANIP_API void WINAPI FileManip(const char *oldfilename, const char *newfilename) { FILE *fp1,*fp2; char line[10240]; int first; fp1 = fopen(oldfilename,"r"); fp2 = fopen(newfilename, "w"); first = 1; while(!feof(fp1)) { fgets(line,sizeof(line),fp1); if(first) { first = 0; } else { fputs(line,fp2); } } fclose(fp1); fclose(fp2); return; }
19. august 2003 - 20:12
#17
Kald fra VB: Declare Sub FileManip Lib "C:\util\FileManip" Alias "_FileManip@8" (ByVal oldfilename As String, ByVal newfilename As String) Function DoFileManip() Call FileManip("C:\z.1", "C:\z.2") End Function eksmplet kopierer bare en fil eksklusive den første linie.
19. august 2003 - 20:12
#18
skal man egentelig have en .h fil eller er det bare noget der er lavet for at gøre livet lettere for alle
19. august 2003 - 20:16
#19
Man skal ikke. Men det her er et af de tilfælde, hvor jeg vil sige at man bør.
19. august 2003 - 20:16
#20
hvordan bruger man det så fra c++ er det noget med noget LoadLibrary og DLLIMPORT...
19. august 2003 - 20:22
#21
Du kan enten bruge LoadLibrary og GetProcAddress eller du builde den med ind. Den første metide er lidt bøvlet men er specificeret i Win32 API og dermed standard. Den sidste metode må være compiler specifik.
10. september 2003 - 22:10
#22
Tid at lukke spørgsmålet ?
Kurser inden for grundlæggende programmering