Piszę C/C++ DLL i chcesz eksportować do niektórych funkcji, które robiłem przed użyciem pliku .def jak tenPrzeciążone funkcje w C++ DLL plik DEF
LIBRARY "MyLib"
EXPORTS
Foo
Bar
z kodem określonym jako to, na przykład:
int Foo(int a);
void Bar(int foo);
jednak co, jeśli chcę zadeklarować przeciążony metodę Foo(), takie jak:
int Foo(int a, int b);
jako D Plik EF ma tylko nazwę funkcji, a nie pełny prototyp. Nie widzę sposobu, w jaki poradziłby on z przeciążonymi funkcjami. Czy używasz tylko jednego wpisu, a następnie określasz, która wersja jest przeładowana, kiedy przechodzisz we właściwie prototypowanym wskaźniku funkcji do LoadLibrary()?
Edit: Żeby było jasne, to na Windows przy użyciu programu Visual Studio 2005
Edit: Oznaczono metodą non-def (__declspec) jako odpowiedź ... Wiem, że to nie faktycznie rozwiązać problemu, korzystając def plików, jak chciałem, ale wygląda na to, że prawdopodobnie nie ma (oficjalnego) rozwiązania przy użyciu plików def. Zostawi pytanie otwarte, jednak na wypadek, gdyby ktoś wiedział, że nie mamy przeciążonych funkcji i plików def.
co jeśli używamy GetProcAddress() z dynamiczną biblioteką DLL? – null
Następnie musisz użyć zniekształconych nazw lub zmienić nazwę jednej z funkcji i uczynić je zarówno "zewnętrznymi" C "', zakładając, że żaden z nich nie przyjmuje lub nie zwraca obiektów C++. –