C/Visual C - TDUMP

 
Vista:

TDUMP

Publicado por leo (4 intervenciones) el 29/10/2004 21:00:23
Tratando de corregir un error de "undefined symbol" que me da en tiempo de link el borland c++ 3.1 a una funcion que esta incluida en un .h y el codigo en un .lib, me genera la siguiente linea en el archivo maestro del programa
000C9D EXTDEF 2 : '@fincas@2close$qv' Type: 0
3 : '@fincas@2define$qv' Type: 0
y otras lineas mas,
y la libreria me da lo siguiente acerca de estas funciones

0000CF PUBDEF '@VBAXE@define$qnzcui' Segment: CSVBAX01_TEXT:0000
0003F3 PUBDEF '@VBAXE@close$qv' Segment: CSVBAX03_TEXT:0000

Estoy tratando de aprender c++ y no tengo idea de como resolver este problema, la diferencia que veo en el nombre es el "2" que aparece luego del @, pero no se si este es el problema y como eliminarlo.

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:TDUMP

Publicado por fernando.gomez (1603 intervenciones) el 30/10/2004 01:02:57
Si tu librería está hecha con algún compilador que no sea Borland C++ 3.1 estás en gravísimos problemas.

Esos caracteres raros que te aparecen son identificadores únicos para las funciones (mangles). Sin embargo, no es algo estándar. Entonces, Visual C++ tiene una forma de crear un mangle, mientras que Borland C++ Builder tiene otra e Interl C++ tiene otra. Ergo, tus librerías deben ser del mismo compilador.

La forma de evitar el mangle es empleando extern "C" en tus declaraciones de las APIs exportadas. A continuación, te presento como se haría con Visual C++:

extern "C" __declspec(dllexport) MiFuncion(int param1 /*et al*/);

Supuestamente debería de funcionarte con extern "C" en tu librería. Pero consulta la documentación de Borland al respecto.

Ahora bien, si no tienes el código fuente de la librería, pues ya no hay ni qué hacerle. De hecho, esta situación es una de las razones por las que surgieron tecnologías más avanzadas para el empleo de componentes (como COM, CORBA, RMI o Remoting).

Saludos y suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar