Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

[VC++] equivalent van Delphi's "external('mydll')"

Anoniem
Fahr
2 antwoorden
  • Hallo,

    Ik vroeg me af of het mogelijk is om een DLL aan te roepen in VC++ zonder header file en zonder loadlibrary en freelibrary. Het gaat om een DLL die in Delphi geschreven is en 1 functie met een bekende naam export met calling convention stdcall. Ik weet dat het in Delphi en VB wel kan, in VB is het iets van "DECLARE function LIB" ofzo en in Delphi is het "function blah(blah); stdcall; external('mydll')". Zo is dus die functie altijd aan te roepen in het programma en hoef je niet elke keer de DLL te loaden en te free-en. Ander voordeel is dat het programma niet draait als de DLL er niet is, in het geval van load- en freelibrary doet ie dat wel…

    Iemand enig idee hoe ik zoiets aanpak? Of moet ik dan toch op de een of andere manier een header schrijven?

    - Fahr
  • Geen idee, maar volgens mij ontkom je niet aan die headers. Wat Delphi doet is immers ook een header maken, alleen ziet deze er wat strakker uit.

    Maar:[quote:3bac28176e]Ander voordeel is dat het programma niet draait als de DLL er niet is, in het geval van load- en freelibrary doet ie dat wel…[/quote:3bac28176e]
    Hier wil ik even bij opmerken dat je met LoadLibrary (volgens mij) wel degelijk de situatie kan afvangen indien de DLL niet wordt gevonden. Beter zelfs, want dit geeft je de mogelijkheid om zelf de fout af te handelen in plaats van dat Windows een redelijk cryptische foutbootschap weergeeft. Je zou bijvoorbeeld kunnen melden dat een bepaalde module niet bestaat en eventueel informatie verstrekken hoe de gebruiker deze module kan installeren. Het is gewoon netter om zelf dit soort fout-afhandelingen onder controle te houden. :o

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.