如何在c代码中调用postgis-1.5.dll的函数

时间:2012-12-17 02:01:31

标签: postgresql dll postgis postgresql-9.1 postgresql-9.0

我在c中创建一个使用Postgis Point的Postgresql扩展。当我尝试在加载后调用postgis-1.5.dll的函数时,它失败并且我没有收到任何错误消息 这是我的代码的一小部分:

    Point *pt =(Point*) palloc(sizeof(Point));
    bool test;
    HINSTANCE DLLHandle;
typedef bool(*ST_empty)(Point*);

ST_emptyPtr ST_empty;

    pt->x = 0.2;
    pt->y = 0.9;
DLLHandle = LoadLibrary(L"postgis-1.5.dll");
ST_empty = (ST_emptyPtr)GetProcAddress(DLLHandle,"LWGEOM_isempty"); 
if (DLLHandle != NULL){
   if(!ST_empty)
     elog(ERROR,"null ehhhh");

   test = ST_empty(p);
       elog(ERROR,"not empty");
    }

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

查看来源可能会有所帮助: lwgeom_is_empty from PostGIS Trunk

你确定它失败了吗?上面的代码不测试函数调用的返回值。以下是做什么的?

if (!ST_empty(p))
  elog(ERROR,"not empty");

布赖恩