2. Funktionen mit gleichen Namen, eine in dll, eine in Prog.
-
Hallo Leute,
ich möchte gerne ein paar Funktionen aus einer dll einbinden. Diese haben leider die gleichen Namen wie die Funktionen die ich in meinem Projekt verwende. Könntet Ihr mir einen Tip geben wie man sowas bewerkstelligen kann? Am besten wäre es natürlich wenn jemand einen BSP Source herumliegen hat. Ein (gutes) Stichwort würde aber auch reichen.
Viele Grüße
Peter
-
Es ist nich moeglich 2 Funktionen mit dem selben Namen zu haben.
Normalerweise verwendet man hier prefixe, zB myLibFunction() statt Function()
-
Du könntest die Funktionen der dll-Datei dynamisch laden. Allerdings ist das ziemlich umständlich.
Am besten gewöhnst du dir das an (oder auch was ähnliches), was Shade Of Mine dir vorgeschlagen hat.
-
Könntest Du nicht Deine Funktion in einem anderen Namespace erstelllen?
-
Es gibt keine Namespaces in C.
-
VErwende doch einfach ein replace für jede deiner Funktionen und stelle ein "my"
voran oder ähnliches.
-
Hallo Leute,
erstmal vielen Dank für die Antworten. Es geht um folgendes: Ich möchte von diversen Schnittstellen (C, Excel, Matlab, Mathcad...) meine Funktionen aufrufbar machen. Das Aussehen des Funktionsaufrufs (also die Func Signatur) muß überall gleich sein. Die Funktion heißt "int myFunc(int i)".
Bei bestimmten Programmen werden nun extra Infos übergeben. Gibt man zB. myFunc(123) in eines dieser Programme ein wird nach "void myFunc(int countIn, int* In[], int countOut, int* Out[]);" gesucht.
Die 123 steht in einem der Arrays. Deshalb muß ich ein extra Wrapperprojekt für fast jedes dieser Schnittstellen schreiben.In jedem Wrapperprojekt würde dann die ursprünglichen Funktion "int myFunc(int i)". eingebunden. Außerdem muß noch die Funktion "void myFunc(int countIn, int* In[], int countOut, int* Out[]);" erstellt werden, nach der ja gesucht wird. -> Namenskonflikt.
Ändere ich den Namen von "int myFunc(int i)", würde die einheitliche Schnittstelle nach C zerstört. (Oder ich müsste ein Wrapper Projekt für die C Schnittstelle erstellen.)Fürs erste habe ich ein weiteres Wrapperprojekt zwischengeschaltet. Das die doppelten Namen verbirgt. Wenns nicht anders geht bleibt es so...
Viele Grüße
Peter
-
In C++ darf man doppelte Namen vergeben, nur die Parameter müssen anders. Allerdings, glaub ich, darfst du das auch nur in einer Klasse (aber da auf jeden Fall).
-
Ev könnte man das Wrapperprojekt in C++ schreiben und dann nach C exportieren...
Aber im Moment bin ich ja noch nicht am Tunen. Ein bißchen Overhead kanns ruhig sein;-)