Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Dll oficial sí, la mía, no (https://www.clubdelphi.com/foros/showthread.php?t=55124)

Guillermo80 08-04-2008 21:11:38

Dll oficial sí, la mía, no
 
Hola, estaba haciendo un programa con una dll compilada por digamos "la casa oficial de FLAC" y me iba bastante bien, pero al compilarla yo (tras instalar un componente nasmw.exe que se requería) con Visual Studio, genero una dll que en principio parece funcionar, pero que cuando llega a hacer uso de una función en la que inicializa un fichero abierto en modo lectura/ecritura pues peta, y el error es el siguiente:

Cita:

Project writewav.exe raised exception class EAccessViolation with message 'Acces violation at address 7C928FEA in module 'ntdll.dll'. Write of address 0000EF0B'. Process stopped. Use Step or Run to continue.
El caso es que mi dll sea llama libFlac.dll y no sé qué es esa ntdll.dll, y como otra curiosidad es que usando la dll que sí funciona "perfecta" en esa misma función se ve que el fichero que le paso, un wav, (no sé por qué) me sale en un enumerado que es "not streamable", así que perdido ando.

Agradecería que alguien me echara un cable, ya que es para mi proyecto de fin de carrera.

Un saludo.

fer21unmsm 08-04-2008 21:21:13

Cita:

Empezado por Guillermo80 (Mensaje 278387)
Hola, estaba haciendo un programa con una dll compilada por digamos "la casa oficial de FLAC" y me iba bastante bien, pero al compilarla yo (tras instalar un componente nasmw.exe que se requería) con Visual Studio, genero una dll que en principio parece funcionar, pero que cuando llega a hacer uso de una función en la que inicializa un fichero abierto en modo lectura/ecritura pues peta, y el error es el siguiente:



El caso es que mi dll sea llama libFlac.dll y no sé qué es esa ntdll.dll, y como otra curiosidad es que usando la dll que sí funciona "perfecta" en esa misma función se ve que el fichero que le paso, un wav, (no sé por qué) me sale en un enumerado que es "not streamable", así que perdido ando.

Agradecería que alguien me echara un cable, ya que es para mi proyecto de fin de carrera.

Un saludo.

Hola, con que herramienta y version esta compilada la dll, y con que herramienta y version la has compilado tu (ya que solo dices visual studio, pero tienes que brindar mas detalle)

Saludos

Guillermo80 08-04-2008 21:30:23

Madre mía, ¿cómo voy a saber yo la versión con la que se generó la dll original? de todas formas me parece a mi entender absurdo, si ambas dll fueron compiladas con el mismo código con éxito el resultado debería ser el mismo, y compatible con cualquiera que hiciera uso de la misma y de las funciones que contiene, ¿no? Yo la he compilado con Visual Studio C++ 6.0.

La rareza extrema es que haya cosas que funcionen bien y otras que no.

Un saludo y gracias por el interés.

JXJ 09-04-2008 04:51:25

Al compilar en C o C++

el codigo resultante. se puede optimizar.
(una tonteria, cuando te das cuenta que no son optimizaciones estandar, no todos
los compiladores ni versiones de c o c++ las soportan, ni vienen claro como se activan
esas optimizaciones)

pascal, de delphi , tiene formas y opciones de optimizacion, pero.
yo creo que casi nadie las toca. por que el codigo, sale muy bien compilado.

Entonces tu codigo fuente. puede requerir, archivos .DEF
con el nombre de las funciones que se exportan.
o alguna opcion de como hacer el link, con otras Dll
del sistema operativo.

Guillermo80 09-04-2008 08:25:51

Gracias JXJ, entonces entiendo que debería buscar si al generar la dll ha generado como tú dices ese fichero .def, que sirva para poder linkear con las funciones definidas, ¿no? voy a investigar eso a ver si puede ser. Al menos parece que tiene sentido, y que esa ntdll.dll sea del sistema operativo.

Un saludo.


La franja horaria es GMT +2. Ahora son las 22:09:02.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi