[VC++] Function importeren zonder name-decoration

Pagina: 1
Acties:

  • TheBlasphemer
  • Registratie: September 2004
  • Laatst online: 13-11-2025
Hey,

Ik ben bezig bij een .dll een .lib en .h te maken, en het lukt al aardig. heb alle functies gedocumenteerd, en heb aan de hand daarvan een .def gemaakt waarmee ik vervolgens met het "lib" commando een libje kan maken.

Echter nu heb ik een probleem:
Alle functies zijn __stdcall, maar zijn zonder enige name-decoration geexporteerd.
Als ik deze nu in de .h zet zoals dit:
code:
1
extern "C" HRESULT __stdcall Initialize(GUID *guid, DWORD IDCRLVersion /* should be 1 */, DWORD dwFlags /*should be 0xF*/);

Dan krijg ik de volgende linker error:
main.obj : error LNK2001: unresolved external symbol _Initialize@12

Uiteraard kan die die niet vinden, aangezien die geexport is als "Initialize" :/
Volgens wat ik gelezen heb zou het extern"C" stukje al de meeste name-decoration weg moeten halen, maar hier heeft VS2005 geen zin in :(

Heeft iemand anders nog andere tips ?

Alvast bedankt,
TB

[img=http://www.web2messenger.com/smallstatus/w2m/theblasp.png]


  • .oisyn
  • Registratie: September 2000
  • Nu online

.oisyn

Moderator Devschuur®

Demotivational Speaker

Het komt volgens mij door die __stdcall, omdat bij __stdcall de callee verantwoordelijk is voor het opruimen van de stack, waardoor het nogal aan stront gaat als je de functie met een verkeerd aantal parameters aanroept (itt __cdecl). Waarom wil je ze eigenlijk als __stdcall hebben? En waarom gebruik je een .def file ipv gewoon __declspec(dllexport)?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.