Ich habe versucht, eine einfache Testfunktion zu exportieren für eine DLL mit einer Anwendung zu arbeiten (FYI: mIRC), die die Aufrufkonvention als angibt:stdcall Namen extern c und Dllexport vs Moduldefinitionen Mangeln (msvC++)
int __stdcall test_func(HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause)
Jetzt, um dies aus der Anwendung zu rufen, würde ich test_func verwenden, aber ich habe festgestellt, aufgrund mangelndem Namen ist es nicht so einfach, wie ich dachte.
Durch ähnliche Themen hier bin ich zu dem Verständnis gekommen, dass mit extern „C“ in Kombination mit __declspec (dllexport) ein equivelant ist (etwas) Verfahren zum Entfernen von Mangeln Definitionen Modul (def). Bei der Verwendung der extern/dllexport-Methode ist meine Funktion (als Beispiel) jedoch immer _test_func @ numbers, während die .def-Datei alle Fehler entfernt, die für die Verwendung mit der Anwendung erforderlich sind, für die ich exportieren musste.
Könnte jemand bitte erklären, warum das so ist? Ich bin nur neugierig auf die beiden Methoden. Vielen Dank!
Windows-API-Funktionen sind Stdcall, haben aber nicht @number und unter Windows ist es üblich, dies auf diese Weise zu tun. –