Estoy trabajando en un archivo DLL que se utilizará desde otro idioma (por lo tanto, no importar libs e incluir los encabezados de dll) mediante el llamado a la llamada _stdcall. El problema es que VC++ parece siempre hacer alguna decoración de nombre en sus símbolos exportados. Todas las referencias que he visto dicen que use extern "C", pero esto parece dejarme con un subrayado inicial y un @ más un número después del nombre exportado.VC++ previene todas las decoraciones del nombre de símbolo
Lo peor es que los medios automatizados para cargar dll de extensión en el idioma de destino hacen esencialmente "func_name = GetProcAddress (dll," func_name ")" así que usando un nombre no decorado GetProcAddress falla, y usando el nombre decorado se queja de (no se permite la @) nombre de variable ilegal :(
¿Cómo puedo hacer VC++ somthing exportación sin decoraciones nombre en absoluto?
extern "C" __declspec(dllexport) int __stdcall test(int x, const char *str);
Dumpbin.exe
00011366 _test @ 8 = @ ILT + 865 (_test @ 8)
hay una razón de utilizar stdcall en lugar de cdecl? – CharlesB
¿A qué idioma estás apuntando? ¿Por qué 'GetProcAddress' falla, devuelve la dirección de la función, no el nombre, y no conozco ningún lenguaje de programación que prohíba el uso de un '@' en las cadenas – Djole
, vea http://stackoverflow.com/q/4550294/11343 – CharlesB