Jump to content


Photo

Packages y Records con DLLs

Package dll record

Best Answer Gronfi , 16 February 2019 - 05:26 AM

Hola, quería cerrar este tema, con el tiempo hemos visto que el problema estaba en las DLLs de C++ y de como recogían y trataban los campos de tipo char*

Así pues, perro verde solucionado :)

Go to the full post


  • Please log in to reply
3 replies to this topic

#1 Gronfi

Gronfi

    Member

  • Miembros
  • PipPip
  • 25 posts

Posted 21 December 2018 - 10:27 AM

Hola,

a ver si le ha pasado a alguien algo similar.

Tengo una aplicación dividida en distintos componentes (funciones básicas, lógica de negocio,...), de manera que cada parte de esas es un package.

La aplicación funciona bien sin problemas.

Ha llegado el momento de integrar unas dlls implementadas en C++, integración que no tiene mayor problema...o eso creía

El problema viene al llamar a las funciones de las dlls que tienen como parámetro un objeto de tipo record que en el lado de C++ recoge una estuctura con campos similares.

Si tengo la aplicación en modo 'package' cuando hago las llamadas a esas funciones da un access violation como la copa de un pino en la dll 'msvcrt.dll', pero si construyo la aplicación en modo no package es decir añadiendo todas las unidades necesarias al proyecto y sin tocar una coma de código, esas llamadas se ejecutan bien. Me tiene loco.

¿Alguien sabe por donde pueden ir los tiros?


  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14460 posts
  • LocationMéxico

Posted 21 December 2018 - 03:24 PM

Hola,

a ver si le ha pasado a alguien algo similar.

Tengo una aplicación dividida en distintos componentes (funciones básicas, lógica de negocio,...), de manera que cada parte de esas es un package.

La aplicación funciona bien sin problemas.

Ha llegado el momento de integrar unas dlls implementadas en C++, integración que no tiene mayor problema...o eso creía

El problema viene al llamar a las funciones de las dlls que tienen como parámetro un objeto de tipo record que en el lado de C++ recoge una estuctura con campos similares.

Si tengo la aplicación en modo 'package' cuando hago las llamadas a esas funciones da un access violation como la copa de un pino en la dll 'msvcrt.dll', pero si construyo la aplicación en modo no package es decir añadiendo todas las unidades necesarias al proyecto y sin tocar una coma de código, esas llamadas se ejecutan bien. Me tiene loco.

¿Alguien sabe por donde pueden ir los tiros?

 

Intersante lio, nunca lo he hecho y no tengo idea,

 

¿pero será que la llamada desde un package es diferente a una aplicación normal?

 

Saludos


  • 0

#3 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4111 posts
  • LocationMadrid - España

Posted 22 December 2018 - 05:38 AM

No creo que el tema vaya por cómo se organiza y compila el código. Seguro que hay un error en el mismo, los fantasmas no existen pero algun error arrastrado en cadena nos los recuerdan. Cuando se usa C/C++ desde Delphi hay que pensar que no son lenguajes equivalentes y que el paso de parámetros a funciones hay que interpretarlo bien para evitar sobresaltos. 

 

Saludos.


  • 0

#4 Gronfi

Gronfi

    Member

  • Miembros
  • PipPip
  • 25 posts

Posted 16 February 2019 - 05:26 AM   Best Answer

Hola, quería cerrar este tema, con el tiempo hemos visto que el problema estaba en las DLLs de C++ y de como recogían y trataban los campos de tipo char*

Así pues, perro verde solucionado :)


  • 0





Also tagged with one or more of these keywords: Package, dll, record

IP.Board spam blocked by CleanTalk.