Usar dll en Borland C++
Publicado por Jorge (3 intervenciones) el 31/10/2007 15:22:28
Hola a todos, mi problema es el siguiente:
Tengo una librería dll que no he implementado y deseo usar desde un programa en Borland C++. Para ello obtengo los ficheros .def y .lib mediante las herramientas implib e impdef. En la dll se incluyen funciones de tipo C y métodos que forman parte de distintas clases. Yo sólo dispongo de los .h de cada una de las clases, pero no de su implementación. Se supone que con los ficheros .h, .def y .lib debería ser suficiente, pero no es así. Las llamas a funciones de tipo C se realizan perfectamente, pero no consigo llamar desde mi programa a un método (por ejemplo el constructor) que pertenece a una clase, alguien me puede ayudar?
Creo que puede tener que ver con el compilador utilizado para generar la dll. Al abrir el archivo .def tengo cosas como:
LIBRARY MORFO.DLL
EXPORTS
_Z12PrintDepTreeN4treeI7depnodeE17preorder_iteratorEi @1 ; _Z12PrintDepTreeN4treeI7depnodeE17preorder_iteratorEi
_Z13yy_scan_bytesPKci @2 ; _Z13yy_scan_bytesPKci
_Z14yy_init_bufferP15yy_buffer_stateP6_iobuf @3 ; _Z14yy_init_bufferP15yy_buffer_stateP6_iobuf
_Z14yy_scan_bufferPcj @4 ; _Z14yy_scan_bufferPcj
_Z14yy_scan_stringPKc @5 ; _Z14yy_scan_stringPKc
_Z15yy_flush_bufferP15yy_buffer_state @6 ; _Z15yy_flush_bufferP15yy_buffer_state
_Z16yy_create_bufferP6_iobufi @7 ; _Z16yy_create_bufferP6_iobufi
...
pcre_callout @2827; pcre_callout
pcre_compile @2828; pcre_compile
pcre_compile2 @2829; pcre_compile2
pcre_copy_named_substring @2830; pcre_copy_named_substring
pcre_copy_substring @2831; pcre_copy_substring
pcre_exec @2832; pcre_exec
pcre_free @2833; pcre_free
pcre_free_substring @2834; pcre_free_substring
pcre_free_substring_list @2835; pcre_free_substring_list
Es decir, las funciones de tipo C aparecen en el .def perfectamente, pero aquellos métodos que pertenecen a una clase aparecen con un nombre raro, y al intentar linkar, C++ Builder me dice:
unresolved external.
Muchas gracias por adelantado!
Tengo una librería dll que no he implementado y deseo usar desde un programa en Borland C++. Para ello obtengo los ficheros .def y .lib mediante las herramientas implib e impdef. En la dll se incluyen funciones de tipo C y métodos que forman parte de distintas clases. Yo sólo dispongo de los .h de cada una de las clases, pero no de su implementación. Se supone que con los ficheros .h, .def y .lib debería ser suficiente, pero no es así. Las llamas a funciones de tipo C se realizan perfectamente, pero no consigo llamar desde mi programa a un método (por ejemplo el constructor) que pertenece a una clase, alguien me puede ayudar?
Creo que puede tener que ver con el compilador utilizado para generar la dll. Al abrir el archivo .def tengo cosas como:
LIBRARY MORFO.DLL
EXPORTS
_Z12PrintDepTreeN4treeI7depnodeE17preorder_iteratorEi @1 ; _Z12PrintDepTreeN4treeI7depnodeE17preorder_iteratorEi
_Z13yy_scan_bytesPKci @2 ; _Z13yy_scan_bytesPKci
_Z14yy_init_bufferP15yy_buffer_stateP6_iobuf @3 ; _Z14yy_init_bufferP15yy_buffer_stateP6_iobuf
_Z14yy_scan_bufferPcj @4 ; _Z14yy_scan_bufferPcj
_Z14yy_scan_stringPKc @5 ; _Z14yy_scan_stringPKc
_Z15yy_flush_bufferP15yy_buffer_state @6 ; _Z15yy_flush_bufferP15yy_buffer_state
_Z16yy_create_bufferP6_iobufi @7 ; _Z16yy_create_bufferP6_iobufi
...
pcre_callout @2827; pcre_callout
pcre_compile @2828; pcre_compile
pcre_compile2 @2829; pcre_compile2
pcre_copy_named_substring @2830; pcre_copy_named_substring
pcre_copy_substring @2831; pcre_copy_substring
pcre_exec @2832; pcre_exec
pcre_free @2833; pcre_free
pcre_free_substring @2834; pcre_free_substring
pcre_free_substring_list @2835; pcre_free_substring_list
Es decir, las funciones de tipo C aparecen en el .def perfectamente, pero aquellos métodos que pertenecen a una clase aparecen con un nombre raro, y al intentar linkar, C++ Builder me dice:
unresolved external.
Muchas gracias por adelantado!
Valora esta pregunta
0