diff -Nurd ogdi-3.1.5-orig/configure ogdi-3.1.5/configure
--- ogdi-3.1.5-orig/configure	2002-02-21 17:41:38.000000000 +0100
+++ ogdi-3.1.5/configure	2016-03-29 14:52:04.000000000 +0200
@@ -1200,7 +1200,7 @@
 PROJ_SETTING=missing
 fi
 
-  for ac_hdr in projects.h
+  for ac_hdr in proj_api.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
@@ -1245,7 +1245,7 @@
     { echo "configure: error: Unable to find external PROJ.4 library, give path or use default internal library." 1>&2; exit 1; }
   fi
   if test "$ac_cv_header_projects_h" = no ; then
-    { echo "configure: error: Unable to find external PROJ.4 projects.h file, give path or use default internal library." 1>&2; exit 1; }
+    { echo "configure: error: Unable to find external PROJ.4 proj_api.h file, give path or use default internal library." 1>&2; exit 1; }
   fi
 
   PROJ_SETTING=external
@@ -1253,11 +1253,11 @@
 
 elif test "$with_proj" != "no" -a "$with_proj" != "" ; then
   
-  if test -r $with_proj/include/projects.h ; then
-    echo "checking for $with_proj/include/projects.h ... found"
+  if test -r $with_proj/include/proj_api.h ; then
+    echo "checking for $with_proj/include/proj_api.h ... found"
     PROJ_INCLUDE=-I$with_proj/include
   else
-    { echo "configure: error: Unable to find $with_proj/include/projects.h" 1>&2; exit 1; }
+    { echo "configure: error: Unable to find $with_proj/include/proj_api.h" 1>&2; exit 1; }
   fi
 
   if test -r $with_proj/lib/libproj.so ; then
diff -Nurd ogdi-3.1.5-orig/configure.in ogdi-3.1.5/configure.in
--- ogdi-3.1.5-orig/configure.in	2002-02-21 17:41:38.000000000 +0100
+++ ogdi-3.1.5/configure.in	2016-03-29 14:56:31.000000000 +0200
@@ -75,13 +75,13 @@
 if test "$with_proj" = "yes" ; then
 
   AC_CHECK_LIB(proj,pj_init,PROJ_SETTING=external,PROJ_SETTING=missing,)
-  AC_CHECK_HEADERS(projects.h)
+  AC_CHECK_HEADERS(proj_api.h)
 
   if test $PROJ_SETTING = missing ; then
     AC_MSG_ERROR([Unable to find external PROJ.4 library, give path or use default internal library.])
   fi
   if test "$ac_cv_header_projects_h" = no ; then
-    AC_MSG_ERROR([Unable to find external PROJ.4 projects.h file, give path or use default internal library.])
+    AC_MSG_ERROR([Unable to find external PROJ.4 proj_api.h file, give path or use default internal library.])
   fi
 
   PROJ_SETTING=external
@@ -89,11 +89,11 @@
 
 elif test "$with_proj" != "no" -a "$with_proj" != "" ; then
   
-  if test -r $with_proj/include/projects.h ; then
-    echo "checking for $with_proj/include/projects.h ... found"
+  if test -r $with_proj/include/proj_api.h ; then
+    echo "checking for $with_proj/include/proj_api.h ... found"
     PROJ_INCLUDE=-I$with_proj/include
   else
-    AC_MSG_ERROR([Unable to find $with_proj/include/projects.h])
+    AC_MSG_ERROR([Unable to find $with_proj/include/proj_api.h])
   fi
 
   if test -r $with_proj/lib/libproj.so ; then
diff -Nurd ogdi-3.1.5-orig/contrib/ogdi_import/ogdi_import.c ogdi-3.1.5/contrib/ogdi_import/ogdi_import.c
--- ogdi-3.1.5-orig/contrib/ogdi_import/ogdi_import.c	2002-02-21 16:54:17.000000000 +0100
+++ ogdi-3.1.5/contrib/ogdi_import/ogdi_import.c	2016-03-29 14:49:11.000000000 +0200
@@ -58,12 +58,7 @@
 #include "ecs.h"
 #include "shapefil.h"
 #include <assert.h>
-#include "projects.h"
-
-#ifndef PJ_VERSION
-#define projPJ PJ*
-#define projUV UV
-#endif
+#include "proj_api.h"
 
 static int	ClientID = -1;
 static int      bNoDict = FALSE;
diff -Nurd ogdi-3.1.5-orig/contrib/ogdi_info/ogdi_info.c ogdi-3.1.5/contrib/ogdi_info/ogdi_info.c
--- ogdi-3.1.5-orig/contrib/ogdi_info/ogdi_info.c	2004-10-26 21:45:53.000000000 +0200
+++ ogdi-3.1.5/contrib/ogdi_info/ogdi_info.c	2016-03-29 14:49:11.000000000 +0200
@@ -63,7 +63,7 @@
  */
 
 #include "ecs.h"
-#include "projects.h"
+#include "proj_api.h"
 
 static int	ClientID = -1;
 static int      bNoDict = FALSE;
@@ -214,7 +214,7 @@
 /*                          DumpGlobalRegion()                          */
 /************************************************************************/
 
-static int DumpGlobalRegion( ecs_Region * region, PJ * proj_defn )
+static int DumpGlobalRegion( ecs_Region * region, projPJ proj_defn )
 
 {
     ecs_Result	*result;
@@ -398,7 +398,7 @@
 
 {
     ecs_Result *result;
-    PJ	       *proj_defn = NULL;
+    projPJ     proj_defn = NULL;
 
 /* -------------------------------------------------------------------- */
 /*      Close old client if there is one active.                        */
diff -Nurd ogdi-3.1.5-orig/ogdi/c-api/client.c ogdi-3.1.5/ogdi/c-api/client.c
--- ogdi-3.1.5-orig/ogdi/c-api/client.c	2004-02-19 07:20:09.000000000 +0100
+++ ogdi-3.1.5/ogdi/c-api/client.c	2016-03-29 14:49:11.000000000 +0200
@@ -1561,7 +1561,7 @@
   char *error_message;
   ecs_CtlPoints *cpts;
   ecs_Result *res;
-  PJ *tempproj;
+  projPJ tempproj;
 
   if (multiblock != 0) {
     res = &cln_dummy_result;
@@ -1583,7 +1583,7 @@
   /* Check if the projection is valid */
 
   if (strncmp(projection,PROJ_LONGLAT,13) != 0) {
-    tempproj = (PJ *) cln_ProjInit(projection);
+    tempproj = (projPJ) cln_ProjInit(projection);
     if(tempproj == NULL) {
       res = &cln_dummy_result;
       ecs_SetError(res,1,"This projection string is invalid");
@@ -1760,7 +1760,7 @@
   ecs_Result *res;
   register ecs_Client *cln;
   char *server_proj;
-  PJ *oldtarget,*oldsource;
+  projPJ oldtarget,oldsource;
   ecs_Region oldreg;
   int oldisprojequal;
   int oldisTargetLL;
@@ -1859,7 +1859,7 @@
 
   if (strncmp(projection,PROJ_LONGLAT,13) != 0) {
     cln->isTargetLL = FALSE;
-    cln->target = (PJ *) cln_ProjInit(projection);
+    cln->target = (projPJ) cln_ProjInit(projection);
     if(cln->target == NULL) {
       goto setprojerror;
     }
@@ -1905,7 +1905,7 @@
 
   if (strncmp(server_proj,PROJ_LONGLAT,13) != 0) {
     cln->isSourceLL = FALSE;
-    cln->source = (PJ *) cln_ProjInit(server_proj);
+    cln->source = (projPJ) cln_ProjInit(server_proj);
     if(cln->source == NULL) {
       goto setprojerror;
     }
@@ -2313,13 +2313,13 @@
  *	char *d: Projection name
  *
  *  OUT
- *	return PJ *: New projection structure. If NULL, the operation
+ *	return projPJ: New projection structure. If NULL, the operation
  *	is a failure.
  *
  *----------------------------------------------------------------------
  */
 
-PJ *cln_ProjInit(d)
+projPJ cln_ProjInit(d)
      char *d;
 {
   int i,n;
@@ -2328,7 +2328,7 @@
   char *l;
   int longueur;
   char *c;
-  PJ *retour;
+  projPJ retour;
   
   if ((c = (char *) malloc(strlen(d)+3)) == NULL) {
     return NULL;
@@ -2363,7 +2363,7 @@
     n++;
   }
 
-  retour = (PJ *) pj_init(n, (char **) tableau);
+  retour = (projPJ) pj_init(n, (char **) tableau);
   free(c);
   free(tableau);
 
diff -Nurd ogdi-3.1.5-orig/ogdi/c-api/ecsgeo.c ogdi-3.1.5/ogdi/c-api/ecsgeo.c
--- ogdi-3.1.5-orig/ogdi/c-api/ecsgeo.c	2001-04-09 17:04:34.000000000 +0200
+++ ogdi-3.1.5/ogdi/c-api/ecsgeo.c	2016-03-29 14:49:11.000000000 +0200
@@ -310,7 +310,7 @@
      char *projection;
      double X1,Y1,X2,Y2;
 {
-  PJ *proj;
+  projPJ proj;
   char **argv;
   int argc;
   double lon1,lat1,lon2,lat2;
diff -Nurd ogdi-3.1.5-orig/ogdi/datum_driver/usa/dtusa.c ogdi-3.1.5/ogdi/datum_driver/usa/dtusa.c
--- ogdi-3.1.5-orig/ogdi/datum_driver/usa/dtusa.c	2001-02-19 05:40:45.000000000 +0100
+++ ogdi-3.1.5/ogdi/datum_driver/usa/dtusa.c	2016-03-29 14:49:11.000000000 +0200
@@ -26,7 +26,12 @@
   ********************************************************************/
 
 #include "ecs.h"
-#include "projects.h"
+#include "proj_api.h"
+
+/* Definition from Proj.4 */
+projUV nad_cvt(projUV, int, struct CTABLE *);
+struct CTABLE *nad_init(projCtx ctx, char *);
+void nad_free(struct CTABLE *);
 
 typedef struct {
   struct CTABLE *dtptr;
@@ -124,7 +129,7 @@
     strcat(pathfile,"/");  
     strcat(pathfile,table);  
 
-    ptr->dtptr = nad_init(pathfile);
+    ptr->dtptr = nad_init(pj_get_default_ctx(), pathfile);
     if (ptr->dtptr == NULL) {
       ptr->count--;
       return FALSE;
diff -Nurd ogdi-3.1.5-orig/ogdi/include/ecs_util.h ogdi-3.1.5/ogdi/include/ecs_util.h
--- ogdi-3.1.5-orig/ogdi/include/ecs_util.h	2005-03-01 01:49:27.000000000 +0100
+++ ogdi-3.1.5/ogdi/include/ecs_util.h	2016-03-29 14:49:11.000000000 +0200
@@ -87,12 +87,7 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 
-#include "projects.h"
-
-/* Ensure we are compatible with PROJ.4.4.x and PROJ.4.3.x */
-#ifndef USE_PROJUV
-#  define projUV UV
-#endif
+#include "proj_api.h"
 
 #include "ecs.h"
 
@@ -1036,8 +1031,8 @@
      ecs_Family currentSelectionFamily: Current layer selection type
      char *tclprocname: attribute callback procedure for tcl
      char *target_proj: Projection descriptor
-     PJ *target: target (c interface) projection descriptors
-     PJ *source: source (driver) projection descriptors
+     projPJ target: target (c interface) projection descriptors
+     projPJ source: source (driver) projection descriptors
      ecs_Datum targetdatum: target datum information
      ecs_Datum sourcedatum: source datum information
      void *dthandle: Handle to the datum driver
@@ -1074,8 +1069,8 @@
   ecs_Family currentSelectionFamily; /* Current layer selection type */
   char *tclprocname;      /* attribute callback procedure for tcl */
   char *target_proj;
-  PJ *target;             /* source and target projection descriptors */
-  PJ *source;
+  projPJ target;             /* source and target projection descriptors */
+  projPJ source;
   int isSourceLL;         /* flags to avoid unnecessary computation */
   int isTargetLL;
   int isProjEqual;
@@ -1147,7 +1142,7 @@
 
 /* Projection conversion functions */
 
-PJ *cln_ProjInit                     _ANSI_ARGS_((char *d));
+projPJ cln_ProjInit                     _ANSI_ARGS_((char *d));
 int cln_CompareProjections           _ANSI_ARGS_((int ClientID));
 int cln_UpdateMaxRegion              _ANSI_ARGS_((int ClientID, double x, double y, ecs_Region *gr, int sens, int first));
 int cln_ConvRegion                   _ANSI_ARGS_((int ClientID, ecs_Region *gr, int sens));
