java native library, Visual Studio에서 dll 만들기

PUBLISHED 2011. 3. 6. 12:09
POSTED IN 공장
프로젝트 만들고, 빌드하기는 여기 참고...


1. 빌드 모드는 릴리즈로....
    디버그 모드로 빌드해서 dll이 잘 튀어나왔다고 해서 안심할 일이 아니다. 다른 컴퓨터에서는 동작하지 않을 수 있을지니.... 
   



2. 링크에러는 라이브러리 추가로....
 

#pragma comment(lib, "ws2_32.lib")

'공장' 카테고리의 다른 글

fatal error LNK1112  (0) 2011.03.06
java-ibatis-mssql, 소수점 문제  (0) 2011.03.02
안드로이드 개발환경 만들기  (0) 2011.02.28

java-ibatis-mssql, 소수점 문제

PUBLISHED 2011. 3. 2. 13:04
POSTED IN 공장

텍스트 파일에 기록된 데이터를 읽어서 MS-SQL에 추가하는 작업을 하고 있다. 프로그래밍 언어는 Java, DB 프레임워크는 iBatis(2.3.4)를 사용한다. 간단한 변환이라 별도의 개발 프레임워크는 사용하지 않는다.


원본 파일의 일부 내용은 다음과 같다. 색으로 표시한 부분을 유심히 봐두자.



파일의 내용을 그대로 읽어서 DB에 넣고, select해본 결과이다. 역시나 색으로 표시한 부분을 유심히 보자..  얼핏 보기에도 정상적이지는 않다. 조금 더 유심히 살펴보면 소수점 끝자리기 .0, .5인 경우를 제외하고는 끝자리가 지저분 하게 insert되어 있는 것을 확인할 수 있다.




그렇다면, 이건 어디에서 발생한 문제인가? 일단 파일에서 읽어와 Float으로 변환한 상태를 찍어보면....
지저분한 소수점 없이 깔끔하게 로드되었다.



그렇다면 왜???


일단은 바쁜관계로 질의문을 수정하여 작업하기로 한다.
색으로 표시한 부분을 보면 원본 파일의 내용과 동일하다.



대부분의 값이 소수점 한 자리인데....
질의문은 다음과 같이 작성했다.


'공장' 카테고리의 다른 글

java native library, Visual Studio에서 dll 만들기  (0) 2011.03.06
안드로이드 개발환경 만들기  (0) 2011.02.28
java native code 호출하기  (0) 2011.02.15

안드로이드 개발환경 만들기

PUBLISHED 2011. 2. 28. 16:20
POSTED IN 공장

Java와 Eclipse가 모두 설치되어 있다고 가정하고....
안드로이드 개발환경은 다음과 같은 단계로 구축할 수 있다.

안드로이드 SDK 설치
http://developer.android.com/sdk/index.html 의 다운로드 페이지에서 SDK를 다운로드 받는다. 다운로드 받을때는 해당 페이지에서 추천하는 것을 선택하여 받는 것이 가장 무난하다.



































혹시나 이 단계에서 Java를 찾을 수 없다고 땡깡을 부리거든 Back버튼을 클릭하여 뒤로 갔다가 다시 돌아오면 Java를 제대로 찾는 수가 있다. 단, 시스템에 JAVA_HOME이 제대로 설정되어 있어야 한다. 


















Browse 버튼을 클릭하여 SDK 설치 디렉토리를 지정할 수 있는데 경로 중간에 공백이 없고, 한글도 없으며 되도록 짧은 이름으로 디렉토리를 선택하도록 하자. 



메뉴나 단축아이콘 만들기는 취향대로.... 





















왠지 여기가 설치 끝일것 같은데.... 이제 본격적인 시작이다.
시간이 많이 소요되니(두어시간...) 마음의 여유를 갖자. 




이런식으로 받아야할 패키지가 줄줄이.... 




중간중간 라이센스 동의도 해주어야 한다. 




ADB 재시작을 물어보면 "예"라고 하자.




설치가 끝나면 버튼이 Close로 바뀐다. 
이제 다음 패키지를 설치해야... 































Close 버튼을 클릭한 다음, 나머지 창들은 X 표를 눌러 모두 닫아준다.



이클립스 플러그인 설치
 


이클립스를 시작해서, Help 메뉴에서 새로운 플러그인들을 설치할 수 있다.
Helios 이전 버전은 Install New Software 메뉴가 없고, Update 어쩌고하는 메뉴가 있을것이다. 













주소 : https://dl-ssl.google.com/android/eclipse 














이클립스가 재시작되면, Windows > Preferences 메뉴에서 좀전에 설치한 SDK 경로를 잡아주어야 한다. 
























샘플 프로그램 실행시켜보기 (안드로이드 가상장비 생성 포함)

새로운 안드로이드 프로젝트 시작하기에서.....




























프로젝트가 로드되면, Android Application으로 실행시키는데, 등록된 안드로이드 가상 장비가 없으므로 새로운 가상의 장비를 등록할 것이지 물어온다. 






























프로젝트를 시작할때 안드로이드 버전 2.3.1 로 설정하고 시작했으니 가상 장비도 그에 맞춰서 구성하자. 
Create AVD 버튼을 클릭한 다음 "Android SDK and AVD Manager"창은 X표를 클릭하여 닫아주자. 





















구성한 가상장비를 선택하고 OK 버튼을 클릭하면 에뮬레이터가 시작되고, 프로젝트가 런칭되는데... 처음 시작할때는 시간이 좀 걸린다. 
혹시나... 너무 오랜시간 구동되지 않거든 새창으로 시작된 에뮬레이터를 종료시키고, 다시 실행시켜보자.




























몇번의 화면 변화를 거치면 드디어 에뮬레이터가 시작된다. 생각외로 오래걸리니 차라도 한잔 마시고 오라... 






















클릭으로 선택해서 마음껏 가지고 놀아보자!

'공장' 카테고리의 다른 글

java-ibatis-mssql, 소수점 문제  (0) 2011.03.02
java native code 호출하기  (0) 2011.02.15
OSGi, native 코드 연동  (0) 2011.02.15

java native code 호출하기

PUBLISHED 2011. 2. 15. 18:30
POSTED IN 공장

작업순서 





라이브러리 생성하기 (Windows 계열, VisualStudio 2008 사용)

1) 프로젝트 만들기 





2) 프로젝트 속성 설정
    : include 할때 추가할 디렉토리, 출력파일명(필요시), 증분링크 사용 안하기(나는 안돼서...), 링커 명령줄에 ws2_32.dll 추가 



3) 소스, 헤더 가져오기



이렇게 해서 빌드하면 pingicmp.dll 이 생성됨 



자바에서 호출하기 
1) 프로그램 실행시 옵션 주기 
    java -Djava.library.path=./native Main
    --> 현재 디렉토리 하위의 native 디렉토리에 pingicmp.dll이 위치한다고 가정

2) 라이브러리 로드하기 
    System.loadLibrary("pingicmp"); 

3) 네이티브 메소드가 포함된 클래스의 객체 호출하기 

'공장' 카테고리의 다른 글

안드로이드 개발환경 만들기  (0) 2011.02.28
OSGi, native 코드 연동  (0) 2011.02.15
java vm argument 프로그램으로 지정하기  (0) 2011.02.14

OSGi, native 코드 연동

PUBLISHED 2011. 2. 15. 12:18
POSTED IN 공장
다음은 OSGi 프레임워크(felix)에 Spring을 얹고, Java 소스에서 native 메소드를 call 하기 위한 설정이다. 

번들 구조



MANIFEST.MF의 구조 

'공장' 카테고리의 다른 글

java native code 호출하기  (0) 2011.02.15
java vm argument 프로그램으로 지정하기  (0) 2011.02.14
Axis2, 프로그램으로 서버 띄우기  (0) 2011.02.11

java vm argument 프로그램으로 지정하기

PUBLISHED 2011. 2. 14. 18:10
POSTED IN 공장

jvm이 구동되고 자바 프로그램에서는 다음과 같이 시스템 속성을 가지고 올 수 있다. 실행 결과를 몇줄 꺼내보면 이렇다.

getProperties()로 가져왔으니, setProperty를 통해 설정이 가능할것만 같다.

실행결과


하나 더 실험해보자.

결과는 이렇다.

절대경로가 아니라서 혹은 실제로 존재하지 않는 라이브러리이기 때문에 로드가 되지 않았는가?
그건 아니다.


ClassLoader 클래스까지 따라가고, 자바가 시작될때 bootstrap, extension, system등 서로 다른 클래스 로더가 사용된다는 점이 확인되면 왜 그런지 확인 가능!

어쨌거나...
동일한 ClassLoader를 사용하는 레벨에서 시스템 속성에 값을 넣고, 공유한다면 문제 없겠지만
java.library.path 와 같이 서로 다른 ClassLoader를 넘나드는 소스 사이에서는 System.getProperty()를 통해 가져오는 값이 서로 다르기 때문에 위와 같은 현상이 발생한다.

결론적으로 java vm argument는 실행시점에 직접주자.


java -Djava.library.path=abcd Main 이런식으로...

'공장' 카테고리의 다른 글

java native code 호출하기  (0) 2011.02.15
OSGi, native 코드 연동  (0) 2011.02.15
Axis2, 프로그램으로 서버 띄우기  (0) 2011.02.11

Axis2, 프로그램으로 서버 띄우기

PUBLISHED 2011. 2. 11. 13:01
POSTED IN 공장
Axis2를 이용하여 서버측 프로그램을 작성하고 이를 실행시키기 위해서는 작성된 코드를 aar로 묶어서 서버에 배포하는 방법이 일반적이다. 또 다른 방법으로는 다음 그림과 같이 서버를 내장하는 프로그램을 작성하여 어플리케이션을 시작하면 웹 서버가 함께 시작되는 방법이다. 

서버자체를 내장하다보니 한 컴퓨터에서 다수의 인스턴스를 실행하는 경우를 생각해 주어야 하는데 가장 간단한 방법은 다른 서버 설정은 동일할테니 포트번호만 다르게 구동시켜주는 것이다.




구동시킬때 파라미터는 다음과 같이 지정하면 된다.
MyAxisServerLauncher ./repository ./conf/axis2.xml 9090


프로그램 구조는 이렇다.

'공장' 카테고리의 다른 글

java native code 호출하기  (0) 2011.02.15
OSGi, native 코드 연동  (0) 2011.02.15
java vm argument 프로그램으로 지정하기  (0) 2011.02.14