Ich bin ein C/C++ DLL zu schreiben und wollen bestimmte Funktionen exportieren, die ich eine DEF-Datei, bevor Sie wie diese definiertÜberladene Funktionen in C++ DLL-Datei def
LIBRARY "MyLib"
EXPORTS
Foo
Bar
mit dem Code getan haben dies zum Beispiel:
int Foo(int a);
void Bar(int foo);
was aber, wenn ich will eine überladene Methode von Foo() wie erklären:
int Foo(int a, int b);
Als d Die ef-Datei hat nur den Funktionsnamen und nicht den vollständigen Prototyp. Ich kann nicht sehen, wie sie mit den überladenen Funktionen umgehen würde. Verwenden Sie nur den einen Eintrag und geben Sie an, welche überladene Version bei der Übergabe des ordnungsgemäß prototypierten Funktionszeigers an LoadLibrary() übergeben werden soll?
Edit: klar zu sein, ist dies auf Windows Visual Studio 2005
bearbeitet mit: die Nicht-def (__declspec) Methode als Antwort markiert ... Ich weiß, das löst nicht das Problem tatsächlich mit def-Dateien, wie ich wollte, aber es scheint, dass es wahrscheinlich keine (offizielle) Lösung mit Def-Dateien gibt. Wird die Frage jedoch offen lassen, falls jemand etwas weiß, haben wir keine überladenen Funktionen und Def-Dateien.
Was ist, wenn wir GetProcAddress() mit einer dynamischen DLL verwenden? – null
Dann müssen Sie die entstellten Namen verwenden oder eine der Funktionen umbenennen und sie beide "extern" C "machen, vorausgesetzt, dass keiner von ihnen C++ - Objekte übernimmt oder zurückgibt. –