www.mikrocontroller.net

Forum: PC-Programmierung Problem mit einer dll bei Visuall C++


Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich habe vor einen Plugin für einen Patches eines Programmes zu 
schreiben.

Der Patch unterstützt Plugins, indem ich mir eine *.dll schreibe. Diese 
*.dll besitzt nach außen eine Schnittstelle in Form einer Funktion, die 
die anderen, selbst definierten Funktionen dem Patch vorstellt.

Als Beispiel lag ein FreeBasic-Programm bei. Da ich nun nur C/C++ kann, 
bin ich also hingegangen und habe das ganze zunächst versucht zu 
adaptieren.
Klappte auch soweit, jedoch versaut mir der Compiler die Sache.

Die berüchtigte Funktion besitzt den Namen RegisterFunctions und soll 
auch so exportiert werden. Der Compiler geht aber hin und exportiert das 
ganze als "?RegisterFunctions@@YA_NHPAULuaDec@@@Z", was übersetzt wohl 
soviel heißen soll wie "bool __cdecl RegisterFunctions(int,struct LuaDec 
*)"

Wie kann ich dem Compiler beibringen, das er das ganze nicht kodiert? In 
FreeBasic geht das ganze scheinbar über das Schlüsselwort "Alias", 
irgendwas äquivalentes kenne ich jedoch nicht und will sich von mir auch 
nicht in Google finden lassen.

Weiß das wer weiter?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du hast eine C++ schnittstelle geschaffen, was du brauchst ist C

versucht es mal mit

_extern_c
(so in der Art, google ist dein freund)

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oder in der Art
extern "C" .......

Autor: staman (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuch mal, die Funktion die du exportieren willst mit __stdcall zu 
deklarieren, also z.B.

int __stdcall Deine_Funktion( int arg1, int arg2 )
{
  ....
}

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Versuch mal, die Funktion die du exportieren willst mit __stdcall zu
> deklarieren, also z.B.
nein das hilft nichts, __stdcall gibt nur an in welcher Reihenfolge die 
Parameter auf den Stack gelegt werden und wer für den wegräumen 
zuständig ist. (ist bei Delphi anders)

Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Yeah, sehr cool. Nachdem ich ein extern "C" eingebaut habe und meine 
Stringfunktionen angepasst habe, klappt das ganze. Besten Dank!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.