🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #12645

Re: C-code naar DLL ?

#12645
From: Patrick Smout
Date: Wed, 24 Oct 2001 20:07
105 lines
3635 bytes
Hallo Wouter,

in de veronderstelling dat je OS Win32 is:

Schrijf een DLL initialisatie functie die er uit ziet als volgt:

BOOL WINAPI  _CRT_INIT (HINSTANCE hDLL, DWORD dwReason, LPVOID lpReserved);
__declspec(dllexport) BOOL WINAPI bMyDLL (HINSTANCE hInstance, DWORD
fdwReason, LPVOID lpvReserved);

__declspec(dllexport) BOOL WINAPI bMyDLL (HINSTANCE hInstance, DWORD
fdwReason, LPVOID lpvReserved)
{
     switch(fdwReason)
     {
     case DLL_PROCESS_ATTACH:
          if (!_CRT_INIT (hInstance, fdwReason, lpvReserved))
               return FALSE;

          return TRUE;

    case DLL_THREAD_ATTACH:
          return TRUE;

     case DLL_PROCESS_DETACH:
          return TRUE;

      case DLL_THREAD_DETACH:
          return TRUE;

     default:
          return FALSE;
     }
}

Vervolgens maak je functies aan die je wil exporteren (lees, aanroepbaar
maken vanuit een andere exe/dll)

__declspec(dllexport) INT WINAPI nMyAPI (void);

__declspec(dllexport) INT WINAPI nMyAPI (void)
{
    ....
}

Linker optie 'DLL entry point' instellen op 'bMyDLL '
Naam van de output file instellen op MyDLL.dll

Module definition file aanmaken en toevoegen aan projectspace of meegeven
als definition file aan de linker.
De opties in dit bestand geven (ondermeer) aan dat je een DLL wil (LIBRARY
statement). Exports geeft de lijst
van ge�xporteerde functies weer (en de naam).

Bestand MyDLL.def:

    LIBRARY MYDLL

    EXPORTS

        nMyAPI


Dit zou het zo ongeveer moeten zijn.

De linker cre�ert normaal gesproken een import library (MYDLL.LIB) die je
kan gebruiken als library tijdens het linken van de exe/dll die je DLL
gebruikt. Voor talen zoals VB en Delphi heb je deze import library niet
nodig maar moet je nMyAPI() expliciet definieren alvorens je de API kan
aanroepen.

Succes ...

Patrick Smout

 "Wauters Kris" <wauters.kris@pandora.be> schreef in bericht
news:ALvB7.3503$yZ.421@afrodite.telenet-ops.be...
> hoi allemaal,
>
> ik heb hier een leuk stukje "standaard" C code liggen, dat alleen maar
> gebruikt maakt
> van enkele standaard libs zoals stdio, string etc ...
> Welnu, ik zou dit stuk code moeten omzetten naar een DLL, zodanig dat de
> functies uit
> deze C kunnen aangeroepen worden vanuit VB.
>
> iemand enig idee hoe dit moet ?
> ik heb alleen wat ervaring met C (en GCC compiler) onder Cygwin,
> en VB onder windows ...
>
>
> Groeten,
> --
> Wauters Kris
> Founder and Chairman of the Belgian Mindstorms Owners Club,
> Creator of the *free* Vision Command ActiveX
> http://www.snoozysplace.be.tf
> Home Enthousiast Dreamcast Developer
> http://www.snoozys-dc-stuff.be.tf
>
>
>
>
>
>
Technical Details
Message-ID: <3bd71ff7$0$36465$ba620e4c@news.skynet.be>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!news.tele.dk!small.news.tele.dk!195.238.2.15!skynet.be!skynet.be!louie!not-for-mail
References: <ALvB7.3503$yZ.421@afrodite.telenet-ops.be>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII
X-Google-Thread: fcea4,6a2af01b461c8e7
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2001-10-24 13:09:30 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!news.tele.dk!small.news.tele.dk!195.238.2.15!skynet.be!skynet.be!louie!not-for-mail
From: "Patrick Smout" <sopa@skynet.be>
Newsgroups: be.comp.programming
References: <ALvB7.3503$yZ.421@afrodite.telenet-ops.be>
Subject: Re: C-code naar DLL ?
Date: Wed, 24 Oct 2001 22:07:39 +0200
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 5.50.4807.1700
X-MIMEOLE: Produced By Microsoft MimeOLE V5.50.4807.1700
Lines: 107
Message-ID: <3bd71ff7$0$36465$ba620e4c@news.skynet.be>
Organization: -= Skynet Usenet Service =-
NNTP-Posting-Host: 195.238.28.169
X-Trace: 1003954167 reader1.news.skynet.be 36465 195.238.28.169
X-Complaints-To: abuse@skynet.be