Search

[GStreamer] 윈도우 Visual Studio 개발 환경 설정

GStreamer 2017.03.06 19:42 Posted by 김한별 behonestar

Windows7 64bit, Visual Studio 10 기준으로 기술하였습니다.



GStreamer 1.10.4 설치

1. 다운로드 

2. gstreamer-1.0-x86_64-1.10.4.msi / gstreamer-1.0-devel-x86_64-1.10.4.msi 설치

 ※ 설치 경로를 기억하세요. 저는 D:\gstreamer에 설치하였습니다.



환경변수 등록

1. 내 컴퓨터 > 속성 > 고급시스템 설정 > 환경변수 > 시스템 변수 > Path [편집]

2. ..;D:\gstreamer\1.0\x86_64\bin 덧붙이고 [확인]


SDK 템플릿 Visual Studio로 복사

1. D:\gstreamer\1.0\x86_64\share\vs\2010\wizard의 파일 3개 복사

 - gst-sdk-template.ico

 - gst-sdk-template.vsdir

 - gst-sdk-template.vsz

2. C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcprojects에 붙여넣기

3. D:\gstreamer\1.0\x86_64\share\vs\2010\gst-template 폴더 복사

4. C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\VCWizards에 붙여넣기



Windows DDK 7.1.0 설치

1. 다운로드

2. 설치 후 경로 확인 (C:\WinDDK\7600.16385.1)



Visual Studio 10 설정

1. Visual Studio 10 실행

2. New > Project > Visual C++ > gstreamer template 선택하고 프로젝트 생성


3. 프로젝트 속성 > 구성 속성 > 디버깅 > 작업 디렉토리 > 편집 >  $(GSTREAMER_1_0_ROOT_X86_64)\bin 입력 > 확인


4. 프로젝트 속성 > 구성 속성 > C/C++ > 일반 > 추가 포함 디렉터리 > 편집에서 GStreamer 경로가 포함된 것을 확인


만약 포함되어 있지 않다면, 속성 관리자 > 프로젝트 > 기존 속성 시트 추가 > D:\gstreamer\1.0\x86_64\share\vs\2010\msvc 폴더의 x86.props(32비트) 또는 x86_64.props(64비트) 열기




5. 속성 관리자 > Debug > x86_64 > config > DDK 경로 들어간 것을 확인


6. Hello World 코드 빌드 및 실행

#include <gst/gst.h>


int main(int argc, char *argv[]) {

  GstElement *pipeline;

  GstBus *bus;

  GstMessage *msg;


  /* Initialize GStreamer */

  gst_init (&argc, &argv);


  /* Build the pipeline */

  pipeline = gst_parse_launch ("playbin uri=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm", NULL);


  /* Start playing */

  gst_element_set_state (pipeline, GST_STATE_PLAYING);


  /* Wait until error or EOS */

  bus = gst_element_get_bus (pipeline);

  msg = gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE, GST_MESSAGE_ERROR | GST_MESSAGE_EOS);


  /* Free resources */

  if (msg != NULL)

    gst_message_unref (msg);

  gst_object_unref (bus);

  gst_element_set_state (pipeline, GST_STATE_NULL);

  gst_object_unref (pipeline);

  return 0;

}



참고

  • https://gstreamer.freedesktop.org/documentation/installing/on-windows.html


Lua 스크립트 Visual Studio 개발 환경 구성

Lua 2015.03.30 14:04 Posted by 김한별 behonestar

Lua 다운로드


1. http://www.lua.org/download.html

2. 최신 버전을 다운 받아서 압축 해제 (lua-5.3.0.tar.gz)


Visual Studio 2013


1. File > New > Project > Visual C++ > General > Empty Project > OK


2. Lua 압축 해제된 파일을 Visual Studio 프로젝트 경로에 복사


3. 프로젝트의 Header Files와 Source Files에 Lua의 .h와 .c파일 포함

※ 단, main 함수 이름이 겹치지 않도록 lua.c와 luah.c 제거


4. Lua 스크립트 작성 후 Visual Studio 프로젝트에 저장 ("test.lua")

#!/usr/bin/lua


function add ( x, y )
    return x + y
end


5. 프로젝트에 main.c 생성하고 main 함수 작성

#include <stdlib.h>
#include <stdio.h>

#include "src/lua.h"
#include "src/lualib.h"
#include "src/lauxlib.h"

int main(void)
{
    lua_State * L = luaL_newstate();
    luaL_openlibs(L);
    if (luaL_dofile(L, "./test.lua"))
        printf("lua script open failed.\n");
   
    /* function name */
    lua_getglobal(L, "add");

    /* arguments */
    lua_pushnumber(L, 1);
    lua_pushnumber(L, 2);

    /* call function with 2 arguments and 1 return */
    lua_pcall(L, 2, 1, 0);

    /* get return value */
    int sum = lua_tointeger(L, -1);
    lua_pop(L, 1);
    printf("sum : %d\n", sum);
   
    lua_close(L);
    return 0;
}


6. 실행결과


가상 스택


Lua는 다른 언어와 데이터를 교환하기 위해 가상 스택을 사용한다. 

스택 인덱스는 plus index(좌측)와 minus index(우측) 모두 사용 가능하다.

마지막으로 반환된 값은 보통 -1 로 접근하는 것이 편하다.


1. 함수 호출 직전

 3

 2

 -1

 2

 1

 -2

 1

 add

 -3


2. 함수 호출 후

 1

 3

 -1



참조

  1. http://stackoverflow.com/questions/16302942/lua-in-visual-studio-2012
  2. http://gamedevgeek.com/tutorials/calling-lua-functions/