yo estaba tratando de exportar una función de prueba simple para un DLL para trabajar con una aplicación (FYI: mIRC) que especifica la convención de llamada como:nombre stdcall mangling usando c extern y dllexport vs definiciones del módulo (msvC++)
int __stdcall test_func(HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause)
Ahora, para llamar esto desde la aplicación, estaría usando test_func pero me he dado cuenta debido a que el nombre no funciona tan bien como había pensado.
A través de temas similares aquí he llegado a la comprensión de que el uso de extern "C" en combinación con __declspec (dllexport) es un método (un poco) de eliminar mangling al módulo definiciones (.def) equivelant. Sin embargo, cuando uso el método extern/dllexport mi función (como ejemplo) siempre es _test_func @ numbers mientras que el .def eliminó todos los cambios necesarios para usar con la aplicación que necesitaba exportar.
¿Podría alguien explicar por qué es esto? Solo tengo curiosidad sobre los dos métodos. ¡Gracias!
windows api funciones son stdcall pero no tienen @number y en Windows es una práctica estándar hacerlo de esta manera. –