336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

GIS를 이용한다면 한번쯤 ArcMap이나 ArcInfo등을 들어 보셨을 걸로 생각 됩니다

GIS에서 가장 많이 사용하는 툴이 ArcMap 입니다

ArcMap은 CAD,SHP등 여러 파일 포멧을 지원 하며 이를 여러 형태로 변경도 시켜 줍니다

자르고 붙이고 늘리고 하면서요

하지만 반복전인 노가다는 사람이 하는거 보다 컴퓨터를 시키는게 더 편할때가 많습니다

Arc의 있는 기능을 반복적으로 이용하기 위해 옛날에는 스크립트를 썼지만

지원이 끊어지고 현재 ESRI에서 공식적으로 권장하는 방식이  ArcObject입니다

ArcObject를 사용하기 위해서는 VS2005가 설치 되어 있어야 합니다

난 VS2008을 써야지 난 VS2010을 써야지 하시는 분도 계시겠지만

ESRI는 용납해 주지 안습니다

무조건 VS2005가 설치 되어 있어야 합니다

다음으로는 ArcGIS가 설치 되어 있어야 하며

ArcGIS SDK가 설치 되어 있어야 합니다

ArcObject는 COM 형태의 인터페이스를 제공 하며

여러분들이 코딩한 것도 COM(DLL)형태로 등록 되게 됩니다 ^^

개인적으로 스크립트 방식이 좋지만 ESRI도 무슨 생각이 있어서 이렇게 만들었겠죠


336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
기획자가 있는 프로젝트라면 스크립트를 통해서 다시 컴파일 안고

세부 설정을 바꾸는게 무지 편하다

그래서 C++관련 프로젝트에서는 루아를 많이 쓴다

라이브러리 컴파일이나 기타는 우선 넘어가고

간단하게 사용법을 코드로 알아 본다

-------------------------------------------------------------------------

//루아에 필요한 헤더들

//루아 관련 헤더 부르는데 이렇게 않하면

//링크 오류 떨어집니다 인터넷의 일부 문서는 이게 빠져서 고생시키죠

 extern "C" {
    #include <lua.h>
    #include <lualib.h>
    #include <lauxlib.h>
}


// 루아스크립트를 사용하기 위한 객체
lua_State* g_pLuaSt;

 

//어느 샘플에서 얻은 소스 일부 입니다 귀찮아서 땡겨 쓰기

void InitLua()
{
 printf("[C] InitLua Script... \n\n");

 // 루아스크립으를 Open.
 g_pLuaSt = lua_open();

 // 루아의 내부라이브러리 객체 생성.
 // load Lua libraries
 luaopen_base(g_pLuaSt);
 luaopen_io(g_pLuaSt);
 luaopen_math(g_pLuaSt);
 luaopen_string(g_pLuaSt);
 luaopen_table(g_pLuaSt);
 }

 

//화면에 printf하는걸 만들어서 루아쪽에서 호출할수 있게 해줍니다

 

static int lua_printf(lua_State *g_pLuaSt)
{

 //루아 통신은 가상스텍으로 합니다

 //스텝은 push , pop형테로 되어 있는 링크리스트 라고 생각 하시면 될거 같습니다.

 //자세한 내용은 C관련 책에 무지 많이 나오니 말주변도 없는 전 이정도만...

 

 //스텍의 탑에는 넘긴 변수의 갯수가 들어 있습니다.

 //어셈이랑도 비슷한듯

 

 //탑을 얻어서 넘긴 변수가 없으면
 int n = lua_gettop(g_pLuaSt);
 if(n < 1)
 {

  //루아쪽에 오류를 알립니다.

  //루아쪽 스텍에 숫자를 하나 넣습니다.
  lua_pushnumber(g_pLuaSt, 0);   // push 0번

  //루아쪽 호출 함수의 리턴은 위의 push의 갯수입니다.

  //위에서 lua_push 관련 함수를 하나 썼으니 1을 리턴하는게 맞겠죠
  return 1;
 }


 char szMessage[256];
 memset(szMessage, 0, sizeof(szMessage));

 //루아 스텍에서 string을 복사해서
 strcpy(szMessage, lua_tostring(g_pLuaSt, 1));

 //화면에 찍고

 printf("%s\n" , szMessage);

 //화면이 정상적으로 작업 했다는걸 알리고
 lua_pushnumber(g_pLuaSt, 1);   // push 1번

 //총 한개를 push했다고 알려 줍니다.
 return 1;
}

 

void SetRegisterLua()
{
 //루아쪽에서 위에 코딩한 lua_printf를 사용할수 있게 선 정의 해줍니다.
 lua_register(g_pLuaSt, "lua_printf", lua_printf);
}

 

void ReleaseLua()
{
 printf("[C] ReleaseLua Script... \n\n");

 //루아 관련 정리
 lua_close(g_pLuaSt);
}

 

void main()
{

 InitLua();

 // 루아파일 open
 lua_dofile(g_pLuaSt, "test.lua");
 SetRegisterLua();


 //test.lua에서 함수를 얻어 옵니다.

 lua_getglobal(g_pLuaSt, "start");
 //실제 루아 함수를 콜합니다 input 인자는 0개 return 값은 1개
 lua_call(g_pLuaSt, 0, 1);

 // 리턴값을 구한다.
 int hr = (int)lua_tostring(g_pLuaSt, -1);

 // 스택을 초기화 한다.
 lua_pop(g_pLuaSt, 1);

 ReleaseLua();

}

<!--test.lua-->

function start()

 lua_printf("기본적인 루아 사용법을 보여 줍니다.\n");
 lua_printf("화면에 단순하게 표시 하지만 이걸 확장하면 여러가지를 할수 있죠\n");
end




336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
사용자 삽입 이미지

담양에서 모가 그리 좋은지 ..

'사진 > 아이아빠' 카테고리의 다른 글

2010년 12월 25일 공연  (0) 2010.12.29
설악산 등반 기념 한장  (0) 2010.07.08
동해 이름 모를 해수욕장에서  (0) 2008.01.07
사진질에 열중인 둥이  (0) 2007.12.24
시드 겨울 사무실 모습들 ^^  (0) 2007.12.24

+ Recent posts