Para poder compilar tuve que compilar y agregar los modulos calldll.c y olefuncs.prg con los cambios sugeridos y agregar Patchg.lib sugerido por Daniel para Harbour 3.1 con eso las pruebas han ido de maravilla y ya pudimos compilar la primera aplicacion completa con mingw.
No funcionaba la función shellexceute y la cambiamos por la siguiente que encontramos en otro foro de harbour:
#pragma BEGINDUMP
#include <hbapi.h>
#include <windows.h>
HB_FUNC( SHELLEXECUTES )
{
hb_retnl( (LONG) ShellExecute( (HWND) hb_parnl(1),HB_ISNIL(2) ? NULL : (LPCSTR) hb_parc(2),(LPCSTR) hb_parc(3),HB_ISNIL(4) ? NULL : (LPCSTR) hb_parc(4),HB_ISNIL(5) ? NULL : (LPCSTR) hb_parc(5),hb_parni(6) ) ) ;
}
HB_FUNC( WINVERSION )
{
OSVERSIONINFOEX osvi;
BOOL bOsVersionInfoEx;
CHAR *szVersion = NULL;
CHAR *szServicePack = NULL;
CHAR *szBuild = NULL;
CHAR buffer[5];
CHAR *szVersionEx = NULL;
ZeroMemory(&osvi,sizeof(OSVERSIONINFOEX));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
bOsVersionInfoEx = GetVersionEx((OSVERSIONINFO*)&osvi);
if ( !bOsVersionInfoEx )
{
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
if ( !GetVersionEx((OSVERSIONINFO*)&osvi))
szVersion = "Unknown Operating System";
}
if (szVersion == NULL)
{
switch (osvi.dwPlatformId)
{
case VER_PLATFORM_WIN32_NT:
if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 2)
szVersion = "Windows Server 2003 family ";
if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1)
szVersion = "Windows XP ";
if (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 0)
szVersion = "Windows Vista ";
if (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 1)
szVersion = "Windows 7 ";
if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0)
szVersion = "Windows 2000 ";
if (osvi.dwMajorVersion <= 4)
szVersion = "Windows NT ";
if (bOsVersionInfoEx)
{
if (osvi.wProductType == VER_NT_WORKSTATION)
{
if (osvi.dwMajorVersion == 4)
szVersionEx = "Workstation 4.0 " ;
else if (osvi.wSuiteMask & VER_SUITE_PERSONAL)
szVersionEx = "Home Edition " ;
else
szVersionEx = "Professional ";
}
else if (osvi.wProductType == VER_NT_SERVER)
{
if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 2)
{
if (osvi.wSuiteMask & VER_SUITE_DATACENTER)
{
szVersionEx = "Datacenter Edition " ;
}
else if (osvi.wSuiteMask & VER_SUITE_ENTERPRISE)
{
szVersionEx = "Enterprise Edition " ;
}
else if (osvi.wSuiteMask & VER_SUITE_BLADE)
{
szVersionEx = "Web Edition " ;
}
else
{
szVersionEx = "Standard Edition " ;
}
}
else if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0)
{
if (osvi.wSuiteMask & VER_SUITE_DATACENTER)
szVersionEx = "Datacenter Server " ;
else if (osvi.wSuiteMask & VER_SUITE_ENTERPRISE)
szVersionEx = "Advanced Server " ;
else
szVersionEx = "Server ";
}
else
{
if (osvi.wSuiteMask & VER_SUITE_ENTERPRISE)
szVersionEx = "Server 4.0, Enterprise Edition " ;
else
szVersionEx = "Server 4.0 " ;
}
}
}
else
{
HKEY hKey;
char szProductType[80];
DWORD dwBufLen = 80;
LONG lRetVal;
lRetVal = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
"SYSTEM\\CurrentControlSet\\Control\\ProductOptions",0,
KEY_QUERY_VALUE,&hKey);
if (lRetVal != ERROR_SUCCESS)
szVersion = "Unknown Operating System";
else
{
lRetVal = RegQueryValueEx(hKey,"ProductType",NULL,NULL,(LPBYTE)szProductType,&dwBufLen);
if ((lRetVal != ERROR_SUCCESS) || (dwBufLen > 80))
szVersion = "Unknown Operating System";
}
RegCloseKey(hKey);
if (szVersion != "Unknown Operating System")
{
if (lstrcmpi("WINNT",szProductType) == 0)
szVersionEx = "Workstation " ;
if (lstrcmpi("LANMANNT",szProductType) == 0)
szVersionEx = "Server " ;
if (lstrcmpi("SERVERNT",szProductType) == 0)
szVersionEx = "Advanced Server " ;
szVersion = strcat(szVersion,itoa(osvi.dwMajorVersion,buffer,10));
szVersion = strcat(szVersion,".");
szVersion = strcat(szVersion,itoa(osvi.dwMinorVersion,buffer,10));
}
}
if (osvi.dwMajorVersion == 4 && lstrcmpi(osvi.szCSDVersion,"Service Pack 6") == 0)
{
HKEY hKey;
LONG lRetVal;
lRetVal = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Hotfix\\Q246009",
0,KEY_QUERY_VALUE,&hKey);
if (lRetVal == ERROR_SUCCESS)
{
szServicePack = "Service Pack 6a";
szBuild = itoa(osvi.dwBuildNumber & 0xFFFF,buffer,10) ;
}
else
{
szServicePack = osvi.szCSDVersion;
szBuild = itoa(osvi.dwBuildNumber & 0xFFFF,buffer,10) ;
}
RegCloseKey(hKey);
}
else
{
szServicePack = osvi.szCSDVersion;
szBuild = itoa(osvi.dwBuildNumber & 0xFFFF,buffer,10) ;
}
break;
case VER_PLATFORM_WIN32_WINDOWS:
if ((osvi.dwMajorVersion == 4) && (osvi.dwMinorVersion == 0))
{
if (osvi.szCSDVersion[1] == 'B')
{
szVersion = "Windows 95 B";
szServicePack = "OSR2";
}
else
{
if (osvi.szCSDVersion[1] == 'C')
{
szVersion = "Windows 95 C";
szServicePack = "OSR2";
}
else
{
szVersion = "Windows 95";
szServicePack = "OSR1";
}
}
szBuild = itoa(osvi.dwBuildNumber & 0x0000FFFF,buffer,10) ;
}
if ((osvi.dwMajorVersion == 4) && (osvi.dwMinorVersion == 10))
{
if (osvi.szCSDVersion[1] == 'A')
{
szVersion = "Windows 98 A";
szServicePack = "Second Edition";
}
else
{
szVersion = "Windows 98";
szServicePack = "First Edition";
}
szBuild = itoa(osvi.dwBuildNumber & 0x0000FFFF,buffer,10) ;
}
if ((osvi.dwMajorVersion == 4) && (osvi.dwMinorVersion == 90))
{
szVersion = "Windows ME";
szBuild = itoa(osvi.dwBuildNumber & 0x0000FFFF,buffer,10) ;
}
break;
}
}
hb_reta( 4 );
hb_storvc( szVersion , -1, 1 );
hb_storvc( szServicePack, -1, 2 );
hb_storvc( szBuild, -1, 3 );
hb_storvc( szVersionEx, -1, 4 );
}
#pragma ENDDUMP
Slds