[Proj] Using proj on Windows

Anthony Dunk AnthonyD at rocketmail.com
Wed Feb 8 20:21:52 PST 2006


Hi Jeff,

You need to dynamically load the PROJ DLL using some code such as the
following:

//
// PROJ4 DLL interface
//

static HINSTANCE g_ProjDLL = NULL;

typedef struct { double u, v; } projUV;

// Proj DLL function pointers
static projPJ       (*pfn_pj_init_plus)(const char *) = NULL;
static projPJ       (*pfn_pj_init)(int, char**) = NULL;
static projUV       (*pfn_pj_fwd)(projUV, projPJ) = NULL;
static projUV       (*pfn_pj_inv)(projUV, projPJ) = NULL;
static void     (*pfn_pj_free)(projPJ) = NULL;
static int      (*pfn_pj_transform)(projPJ, projPJ, long, int, 
                                    double *, double *, double * ) =
NULL;
static int         *(*pfn_pj_get_errno_ref)(void) = NULL;
static char        *(*pfn_pj_strerrno)(int) = NULL;
static char        *(*pfn_pj_get_def)(projPJ,int) = NULL;
static void         (*pfn_pj_dalloc)(void *) = NULL;

static BOOL LoadProjDLL()
{
	g_ProjDLL = LoadLibrary("proj.dll");
	if (g_ProjDLL==NULL) return FALSE;

    pfn_pj_init = (projPJ (*)(int, char**)) GetProcAddress( g_ProjDLL,
"pj_init");
    
    if( pfn_pj_init == NULL )  return( FALSE );

    pfn_pj_init_plus = (projPJ (*)(const char *)) GetProcAddress(
g_ProjDLL, "pj_init_plus");
    pfn_pj_fwd = (projUV (*)(projUV,projPJ))      GetProcAddress(
g_ProjDLL, "pj_fwd" );
    pfn_pj_inv = (projUV (*)(projUV,projPJ))      GetProcAddress(
g_ProjDLL, "pj_inv" );
    pfn_pj_free = (void (*)(projPJ))		      GetProcAddress( g_ProjDLL,
"pj_free" );
    pfn_pj_transform = (int (*)(projPJ,projPJ,long,int,double*,
                                double*,double*)) GetProcAddress(
g_ProjDLL, "pj_transform" );
    pfn_pj_get_errno_ref = (int *(*)(void))		  GetProcAddress(
g_ProjDLL, "pj_get_errno_ref" );
    pfn_pj_strerrno = (char *(*)(int))			  GetProcAddress( g_ProjDLL,
"pj_strerrno" );
    pfn_pj_get_def = (char *(*)(projPJ,int))      GetProcAddress(
g_ProjDLL, "pj_get_def" );
    pfn_pj_dalloc = (void (*)(void*))			  GetProcAddress( g_ProjDLL,
"pj_dalloc" );

	return TRUE;
}


Cheers,
Anthony.


--- Jeff Holt <jjholt at hiwaay.net> wrote:

> 
> I need to use proj.dll within a VC++ (version 6) project, however I
> can't
> find a .lib file to link against. Is there a distribution that has a
> proj.lib? Or do I have to get the source and create one myself?
> 
> Thanks!
> 
> _______________________________________________
> Proj mailing list
> Proj at lists.maptools.org
> http://lists.maptools.org/mailman/listinfo/proj
> 




__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 



More information about the Proj mailing list