PDA

Ver la Versión Completa : Problema con DLL


Victor_TlrSoft
02-02-2006, 14:06:09
Holas:

Tengo una DLL hecha en delphi, y me encuentro con el siguiente problema : internamente la DLL generar un DocumenWebServiceContract que se usa para conectarse al un servicio web de WebLogic.
Si invoco la libreria desde VB6 no tengo ningun problema en utilizar los metodos que esta exporta, el problema viene cuando intento utilizar la libreria desde Delphi, es entonces cuando me lanza el siguiente error :

Project Text_Dll_External.exe raised exception class EOlrSysError with message "No se ha llamado a CoInitialize"

Y se muere en el catch que le tengo en esa linea.
¿Alguien tiene idea de porque puede ser esto?

Muchas Gracias

Victor_TlrSoft
02-02-2006, 15:22:06
Bueno, como nadie me contesto, pues ya lo consegui arreglar yo a base de matarme la cabeza. El problema es el siguiente :

En una DLL los componentes COM no se inicializan de manera implicita como lo hacen en un ejecutable, por ello cuando invocamos componentes ActiveX desde dentro de una DLL, estos no estan inicializados.

La manera de solcucionarlo es la siguiente:

En el codigo que se ejecuta directamente al iniciar una DLL, en mi caso una Unit tenemos que agregar al Uses la importacion ==> ActiveX

Y a mayores generar un bloque de inizialitation con la sentencia al principio de todo:
CoInitialize(nil);
De esta manera se inicializaran los ActiveX y podremos utilizarlos de la manera normal.

unit UnitDll

uses SysUtils, SOAPHTTPTrans, ActiveX;

interface
//lo que sea
implementation
//la implementacion de lo que sea
initialization
CoInitialize(nil);

end.

Espero haber sido de ayuda.
Un Saludin.