Antonio, gracias por tu respuesta, pero definitivamente no funciona.
Seguí las instrucciones que diste. Modifiqué maindllp.c y hbtypes.h
En un ejemplo simple compila, ejecuta, lee el contenido de la función en la Dll y retorna bien el resultado, perfecto. Pero.....
Tengo Dlls conformadas por 5 o más PRGs con más de 10000 líneas de código que controlan procesos complejos de producción industrial, otras controlan sistemas de venta POS y manejo de periféricos POS. Se crean Ventanas, Diálogos, Browses, se capturan datos, se imprimen informes, interactúan con TSBrowse y TSButton, Gráficos, etc. En otras palabras, hacemos maravillas con las Dll y todas funcionan perfecto con FWH 2.7.
Por lo que pude inferir, ya no hace falta compilar y linkear en las dlls el archivo FWSTUB.PRG pues no hace nada. En su reemplazo, tomé todas esas intrucciones y las cambié de Stub a DYNAMIC. Luego las incorporé como "includes", en cada PRG que conforman cada Dll. Si en un prg no están incluídas genera error cuando invoque alguna función en ese prg. Por otro lado, si se linkean como Libreria, como se hacía con FWStub, no reconoce ninguna función.
Lo mismo hay que hacer con cada función de Clipper/Harbour que se quiera utilizar en la Dll. Por ejemplo si quieres hacer un dbGoTop, pues debes ponerlo como DYNAMIC, igual con Empty(), File().dbSkip()....... es decir, todas, sin excepción, las que vayas a utilizar.
Adicionalamente, pones un Dialogo con un simple SAY en un prg y funciona bien. Muestra el diálogo y el say, pero si se te ocurre poner OemToAnsi("seleccione su opción"), entoncer revienta, genera error y no indica cuál ni en dónde. Para solucionarlo te quedan dos opciones: O quitas el OemToAnsi() o pasas la rutina al primer Prg de la Dll para que funcione. Entonces nos quedara un PRG de más de 10000 líneas
Tres personas llevamos 24 horas sin dormir intentando hacerlas funcionar y no hemos podido. O somos muy burros o fue un cambio estructural y no damos por dónde buscarlo.
Y esto es apenas el inicio de las dlls. ni hablar de intentar hacer un deSetFilter, un ADSSETAOF o alguna función de mayor peso. Error y no se sabe porqué. Toca ir aislando línea por línea para ver dónde se genera el error, algunos definitivamente no los pudimos solucionar.
Créeme que hemos hecho todos los intentos y es terriblemente desgastador. Tratamos de valernos por nosotros mismos para no molestarte ni molestar a los compañeros del foro, pero el asunto definitivamente se escapó de nuestras manos.
AUXILIO Antonio...................
No existirá alguna forma de dejar todo el proceso relaciona con el manejo de PCode Dlls como estaba hasta la versión 0.99.61 ?
Por la modificación que me sugeriste, queda claro que fué un cambio en xHarbour, pero lamentablente, a más de que manejo un inglés muy deficiente, no tengo los conocimientos técnicos para lanzarme en una consulta de esta naturaleza y plantearla de la forma en que le gusta a Ron Pinkas.
No sé si algún otro colega usa intensivamente Dlls y con cuál versión . Si alguno está usando la última versión de FWH y de xharbour, y usa intensivamente código en Dlls y le están funcionando bien, por Dios, que me eche una manito, y me cuente cómo lo hizo.
Y como la Ley de Murphy es inexorable, justo en estos días se les ha ocurrido a una buana cantidad de clientes pedir cambios o procesos nuevos por cierre de año e inicio del próximo.
Un abrazo y espero con ansias tu ayuda,
Saludos,
Carlos Gallego