KR20080039080A - 이종언어편집 라이브러리의 인터페이스 기능이 구비된단말장비, api호출방법 및 컴파일함수생성방법 - Google Patents

이종언어편집 라이브러리의 인터페이스 기능이 구비된단말장비, api호출방법 및 컴파일함수생성방법 Download PDF

Info

Publication number
KR20080039080A
KR20080039080A KR1020060106799A KR20060106799A KR20080039080A KR 20080039080 A KR20080039080 A KR 20080039080A KR 1020060106799 A KR1020060106799 A KR 1020060106799A KR 20060106799 A KR20060106799 A KR 20060106799A KR 20080039080 A KR20080039080 A KR 20080039080A
Authority
KR
South Korea
Prior art keywords
library
language
function
api
written
Prior art date
Application number
KR1020060106799A
Other languages
English (en)
Inventor
김종배
김후종
Original Assignee
에스케이 텔레콤주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이 텔레콤주식회사 filed Critical 에스케이 텔레콤주식회사
Priority to KR1020060106799A priority Critical patent/KR20080039080A/ko
Priority to PCT/KR2007/005036 priority patent/WO2008054074A1/en
Publication of KR20080039080A publication Critical patent/KR20080039080A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/72Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
    • H04M1/724User interfaces specially adapted for cordless or mobile telephones

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 C++언어형태의API주소값을 갖는 컴파일함수테이블이 구비된 C++언어로 작성된 라이브러리와 C언어로 작성되어 컴파일함수테이블과 연계되는 Stub을 갖는 라이브러리를 저장하는 비휘발성메모리인 제1 저장매체와; 상기C 언어로된 라이브러리에서 C++언어로 작성된 라이브러리의 호출과정을 C 언어로된 라이브러리의 Stub와 C++언어로 작성된 라이브러리의 컴파일함수테이블을 참조하여 실제 API의 주소값을 찾아 그 해당 API 위치로 링킹한 다음 호출처리하도록 제어하는 주제어부를 포함하여 구성되는 이종언어편집 라이브러리의 인터페이스 기능이 구비된 단말장비 및 API 호출방법을 제공한다.
상기와 같은 본 발명은 다른 언어로 구성된 라이브러리 함수라도 컴파일함수테이블을 통해 그 대응되는 라이브러리 함수의 실제주소값을 찾아API를 호출할 수 있으므로 그에 따라 플랫폼함수의 이종언어함수간 인터페이스특성을 상당히 향상시키는 장점을 가지고 있다.
Stub, C언어작성 라이브러리, C++작성 라이브러리, 컴파일함수테이블

Description

이종언어편집 라이브러리의 인터페이스 기능이 구비된 단말장비, API호출방법 및 컴파일함수생성방법{terminal having an interfacing function of the Heterogeneity language compile library, API calling method and compile function generating method}
도 1은 종래 API호출기능이 구비된 단말장비를 설명하는 설명도.
도 2는 본 발명의 이종언어편집 라이브러리의 인터페이스 기능이 구비된 단말장비를 설명하는 설명도.
도 3은 본발명의 컴파일함수테이블의 생성방법을 설명하는 설명도.
도 4는 본 발명의 인터페이스방법을 설명하는 플로우차트.
<부호의 상세한 설명>
1 : 컴파일함수테이블          2 : C++ 언어작성 라이브러리
3 :  Stub            4 : C언어작성 라이브러리
5 :  ROM                   6 : RAM
7 :  주제어부                     8 : 단말장비
9 :  이동통신망시스템             10: 무선모듈부
11:  디스플레이            12: 마이크로폰
13: 코덱부 14: 키패널부
15: 상대방 단말장비
본 발명은 이종언어편집 라이브러리의 인터페이스 기능이 구비된 단말장비, API호출방법 및 컴파일함수생성방법 에 관한 것으로, 특히 C언어로된 함수에서 C++언어로된 함수를 호출할경우 미리 생성한 컴파일 함수테이블내에서 대응되는 실제 함수의 주소값을 찾아 해당 위치로 링킹시키는 이종언어편집 라이브러리의 인터페이스 기능이 구비된 단말장비, API호출방법 및 컴파일함수생성방법 에 관한 것이다.
일반적으로 이동통신체계 중 단말장비에는 내장된 메모리를 관리하는 운영체제가 단말장비를 제조한 제조사(OEM) 영역이 있고, 반면에 그러한 단말장비의 통신망을 운용하는 망운용사업자에 의해서 관리되는 WIPI(Wireless internet platform for interoperability) 영역이 존재하게 된다.
그리고, 상기와 같은 종래 단말장비는 설정된 응용프로그램을 실행하기 위해 어플리케이션을 이용할 경우 예컨대, 응용프로그램이 제조사나 WIPI플랫폼의 API(application program interface)를 이용하게 된다. 그런데, 이러한 API는 응용 프로그램이 컴퓨터 운영 체계(OS)나 데이터베이스 관리 시스템(DBMS) 등 다른 프로그램의 기능을 이용하기 위한 인터페이스로서, 응용 프로그래밍 인터페이 스(application programming interface)라고도 하며, 일반적으로 API라는 약어로 부른다. 실제로 이 API는 OS 등의 기능과 그 기능을 사용하는 방법을 정의한 함수의 집합을 말하며, 응용 프로그램은 API를 사용하여 OS 등이 가지고 있는 다양한 기능을 이용할 수 있다.
또한, 상기와 같은 플랫폼들은 통상 일정의 프로그램 언어 예컨대, C나 혹은 C++ 언어로 라이브러리 함수들을 작성한다음 이를 이용하여 플랫폼의 API들을 호출하게된다.
그러면, 상기와 같은 종래 플랫폼 호출기능을 갖는 단말장비를 도 1을 참고로 살펴보면, RO(READ ONLY)영역, RW(READ WRITE)영역 및 ZI영역으로 구분되고, 이중 RO영역에 라이브러리의 API주소값들을 기록한 라이브러리 함수테이블(70)이 위치되어 있고 RW 영역에 플랫폼 운용을 위한 폰바이오스 혹은 응용 프로그램들이 임베디드형태로 저장하는 비휘발성메모리인 ROM(71)과;
상기 ROM(71)으로부터 로딩된 라이브러리 함수테이블(70)를 RO 영역에, 폰바이오스 및 응용프로그램의 실행데이터들을 RW영역에, 초기화하지 않은 전역변수의 사이즈정보를 ZI영역에 로딩시킴과 더불어 내부에서 처리된 임시데이터들을 Heap영역에서 처리하는 휘발성메모리인 RAM(72)과;
상기 RAM(72)의 RW영역으로 사용자가 설정한 폰바이오스 혹은 응용프로그램을 로딩시키고 RO영역에 위치한 라이브러리 함수테이블(70)로부터 실행을 원하는 API를 찾아 해당 API를 호출한 다음 API를 통해 플랫폼 예컨대, 제조사나 WIPI 플 랫폼의 기능을 실행하도록 제어하는 제어부(73)를 포함한다.
여기서, 상기 라이브러리 함수테이블(70)은 C언어로 작성된 함수들의 라이브러리들이 존재하거나 혹은 C++로 작성된 함수들의 라이브러리들이 존재하게된다.
한편, 상기와 같은 종래 플랫폼호출기능이 구비된 단말장비의 로딩동작을 살펴보면, 먼저, 단말장비(74)의 제어부(73)는 시스템이 온 되면 부팅(booting)을 실행한 후에 단말장비 사용자가 키패드(75)를 통해 자신이 원하는 응용프로그램 예컨대, WIPI영역의 게임이나 기타 제조사영역의 계산기기능의 어플리케이션을 실행시킬 경우 이러한 어플리케이션과 관련된 모든 라이브러리를 ROM(71)에서 RAM(72)으로 로딩시킨다.
즉, 상기 단말장비(74)의 제어부(73)는 부팅이나 프로그램이 실행될 경우 이들을 RAM(72)에 로딩시키게 하는데, 예컨대, ROM(71)의 RO영역에 위치한 C언어로 작성된 라이브러리함수테이블(70)을 RAM(72)의 RO 영역으로, ROM(71)의 RW 영역에 위치한OS와 응용프로그램들은 이미지 형태로 저장되어 있다가 부팅 혹은 로딩과 동시에 RAM(72)의 RW영역으로 복사되어 RAM Disk를 만든 후, RAM 디스크 상에서 OS와 응용프로그램 예컨대, 제조사 어플리케이션이나 WIPI 어플리케이션들을 구동시키게 된다.
그리고, 상기 ROM(71)의 ZI영역에 있는 예컨대, 크기 등의 정보 역시 RAM(72)의 ZI영역으로 상기 RW영역에 있는 정보와 함께 로딩된다.
이때, 단말장비(70)의 제어부(73)가 로딩된 프로그램을 실행하기 위해 필요한 API를 호출할 경우 이미 로딩된 RAM(72)의 RO영역에 위치한 C언어로 작성된 라 이브러리 함수들이 들어있는 라이브러리 함수테이블(70)로부터 실행을 원하는 API의 주소값을 갖는 라이브러리를 검색한다. 또한, 상기 제어부(73)는 라이브러리 함수테이블(70)의 검색에 의해 해당API의 주소값이 얻어질 경우 그 API가 있는 위치로 링킹한다음 API를 호출하고 그 호출한API를 통해 플랫폼 예컨대, 제조사나 WIPI 플랫폼의 기능을 실행시킨다.
그러나, 상기와 같은 종래 플랫폼 호출기능이 구비된 단말장비는 로딩에 필요한 라이브러리 함수테이블의 라이브러리 함수들을 C언어로 작성하거나 혹은 라이브러리 특성에 따라 객체지향 방식의 설계와 구현을 위해 C++로 작성되는 경우가 많은데, 이때 C언어로 작성된 라이브러리에서 C++로 작성되는 라이브러리의 API를 호출할 경우 호환이 되지않기 때문에 C++로 작성된 라이브러리를 호출할 수가 없어 단말장비의 동작이 불안정하게되므로 그에 따라 단말장비의 동작안정성을 상당히 저하시켰으며, 아울러, C언어로 작성된 라이브러리에서 C++로 작성되는 라이브러리의 API를 호출할 경우 호환이 되지않기 때문에 객체지향설계와 구현에 유리한 C++로 작성된 라이브러리를 기존의 , C언어 기반의 라이브러리에서는 전혀 사용할 수 가 없으므로 그에 따라 단말장비 플랫폼의 설계성도 상당히 저하시킨다는 문제점이 있었다.
이에 본 발명은 상기와 같은 제반 문제점을 해결하기 위해 발명된 것으로,  다른 언어로 구성된 라이브러리 함수라도 컴파일함수테이블을 통해 그 대응되는 라 이브러리 함수의 실제주소값을 찾아API를 호출할 수 있는 이종언어편집 라이브러리의 인터페이스 기능이 구비된 단말장비, API호출방법 및 컴파일함수생성방법을 제공함에 그 목적이 있다.
본 발명의 또다른 목적은 C++로 함수이름을 컴파일하여 얻어진 함수심볼에 숫자로된 함수ID를 부여한다음 컴파일함수테이블을 구성하기 때문에 이종 언어의 C 함수에서 호출할경우 C언어의 함수가 요구하는 해당 API의 주소값을 신속히 얻어 그 API의 실제주소 위치로 신속히 링킹시킬 수 있는 이종언어편집 라이브러리의 인터페이스 기능이 구비된 단말장비, API호출방법 및 컴파일함수생성방법을 제공하는데 있다.
상기와 같은 목적을 달성하기 위한 본 발명은 C++언어형태의API주소값을 갖는 컴파일함수테이블이 구비된 C++언어로 작성된 라이브러리와 C언어로 작성되어 컴파일함수테이블과 연계되는 Stub을 갖는 라이브러리를 저장하는 비휘발성메모리인 제1 저장매체와;
상기 제1 저장매체에 저장된 플랫폼 로딩시 C언어로 작성된 Stub을 갖는 라이브러리와 컴파일함수테이블이 구비된 C++언어로 작성된 라이브러리를 로딩되는 공간인 휘발성메모리의 제2저장매체와;
상기C 언어로된 라이브러리에서 C++언어로 작성된 라이브러리의 호출과정을 C 언어로된 라이브러리의 Stub와 C++언어로 작성된 라이브러리의 컴파일함수테이블을 참조하여 실제 API의 주소값을 찾아 그 해당 API 위치로 링킹한 다음 호출처리 하도록 제어하는 주제어부를 포함하여 구성되는 이종언어편집 라이브러리의 인터페이스 기능이 구비된 단말장비을 제공한다.
본 발명의 다른 특징은 단말장비에서C언어로 작성된 라이브러리의 Stub에서 C++ 언어로 작성된 라이브러리로 API 주소값을 요구하는 지를 확인한다. 주소값요구 확인과정과;
상기 주소값요구 확인과정중에 확인한결과 C언어로 작성된 라이브러리의 Stub에서 C++ 언어로 작성된 라이브러리로 API 주소값을 요구할 경우 C 언어 라이브러리의 Stub가 함수이름으로 요구한 API 주소값을 C++ 언어 라이브러리의 컴파일함수테이블에서 그 대응되는 같은 함수이름으로 검색하여 획득하는 실제주소값 획득과정과;
상기 실제주소값 획득과정후에 C언어의 Stub가 C++언어의 컴파일함수테이블에서 획득한 실제 C++ 라이브러리상의 주소값의 위치로 링킹하여 해당 API를 실행시키는 C++ API링킹과정;을 포함하여 구성되는 API호출 방법을 제공한다.
더나아가, 본 발명의 또다른 특징은 C++언어로 된 단말장비의 라이브러리의 함수이름들을 컴파일시켜 라이브러리를 생성하는 컴파일단계와;
상기 컴파일단계후에 컴파일된 라이브러리에서 심볼(함수이름)을 추출하는 심볼추출단계와;
상기 심볼추출단계후에 추출된 심볼(함수이름)에 함수ID를 부여하여 컴파일함수테이블을 갖는 라이브러리를 생성하는 함수ID부여단계를 포함하여 구성되는 컴파일함수생성방법을 제공한다.
이하, 본 발명을 첨부된 예시도면에 의거 상세히 설명한다.
본 발명은 도 2에 도시된 바와 같이C++언어형태의API주소값을 갖는 컴파일함수테이블(1)이 구비된 C++언어로 작성된 라이브러리(2)와 C언어로 작성되어 컴파일함수테이블(1)과 연계되는 Stub(3:Stub)을 갖는 라이브러리(4)를 포함하고 플랫폼 운용을 위한 폰바이오스 혹은 응용 프로그램들을 저장하는 비휘발성메모리(ROM)인 제1 저장매체(5: 이하 ROM이라 함)와;
상기 제1 저장매체(5)에 저장된 플랫폼 로딩시 C언어로 작성된 Stub(3)을 갖는 라이브러리(4)와 컴파일함수테이블(1)이 구비된 C++언어로 작성된 라이브러리(2)와 함께 폰바이오스 혹은 응용프로그램의 실행데이터를 로딩시키고 단말장비 내부에서 처리된 임시데이터들을 저장하는 휘발성메모리(RAM)인 제2저장매체(6: 이하 RAM이라 함)와;
상기 이종 언어로 작성된 라이브러리간의 인터페이스과정 예컨대, C 언어로된 라이브러리에서 C++언어로 작성된 라이브러리(2)의 호출과정을 C 언어로된 라이브러리의 Stub(3)와 C++언어로 작성된 라이브러리(2)의 컴파일함수테이블(1)을 참조하여 실제 API의 주소값을 찾아 그 해당 API 위치로 링킹한 다음 호출처리하도록 제어하며, 단말장비(1)의 기능을 전반적으로 제어하는 주제어부(7)를 포함한다.
여기서, 상기 주제어부(7)는 C언어로 작성된 라이브러리(4)의 Stub(3)에서 API의 주소값을C++언어로 작성된 라이브러리(2)의 컴파일함수테이블(1)로 요구할 경우 함수이름으로 요구하도록 제어한다.
또한, 상기 단말장비(8)에는 무선모듈이 구비된 PDA, 무선모듈이 구비된 노트북, 무선모듈이 구비된 PC 및 휴대폰을 포함한다.
그리고, 상기 Stub(3)는 다른 C언어로 작성된 라이브러리(4)의 주소값을 호출함과 더불어 C++언어로 작성된 라이브러리(2)의 컴파일함수테이블(1)로 함수이름을 통해 실행을 원하는 API의 주소값을 호출하는 함수를 갖는다.
한편, 상기 단말장비(8)에는   주제어부(7)의 전송제어신호에 따라 이동통신망시스템(9)를 경유하여 단말장비(1)로 송수신되는 영상 및 음성신호가 포함된 무선 호신호(멀티미디어신호 포함)를 처리하는 무선모듈부(10)와;
       주제어부(7)의 표시기능 제어신호에 따라 단말장비(8)에서 처리되는 각종 데이터를 외부로 표시하는 디스플레이(11)와;             
        주제어부(7)의 호 연결 제어신호에 따라 마이크로폰(12)을 통해 입력되는 아날로그 음성신호를 디지털신호로 변환하거나 디지털 음성신호를 아날로그신호로 변환하여 출력하는 코덱부(13)와;
        주제어부(7)의 일단에 연결되어 주제어부(7)로 사용자의 기능설정신호를 입력시키는 키패널부(14)를 더 포함한다.
다음에는 상기와 같은 장치에 적용되는 제어방법을 설명한다.
본 발명의 API호출 방법은 도 3에 도시된 바와같이 초기상태(S1)에서 주소값 요구 확인과정(S2)으로 진행하여 C언어로 작성된 라이브러리의 Stub에서 C++ 언어로 작성된 라이브러리로 API 주소값을 요구하는 지를 확인한다.
여기서, 상기 주소값요구 확인과정(S2)에는 C언어로 작성된 라이브러리의 Stub가 C++ 언어로 작성된 라이브러리로 API 주소값을 요구할 때 함수이름을 이용하여 요구하는 함수이름 요구단계를 더 포함한다.
이때, 주소값요구 확인과정(S2)중에 확인한결과 C언어로 작성된 라이브러리의 Stub에서 C++ 언어로 작성된 라이브러리로 API 주소값을 요구하지 않았을 경우 현단계를 종료하고 대기상태로 진행한다. 그러나, 주소값요구 확인과정(S2)중에 확인한결과 C언어로 작성된 라이브러리의 Stub에서 C++ 언어로 작성된 라이브러리로 API 주소값을 요구할 경우 실제주소값 획득과정(S3)으로 진행하여 C 언어 라이브러리의 Stub가 함수이름으로 요구한 API 주소값을 C++ 언어 라이브러리의 컴파일함수테이블에서 그 대응되는 같은 함수이름으로 검색하여 획득한다.
그리고, 실제주소값 획득과정(S3)후에 C++ API링킹과정(S4)으로 진행하여 C언어의 Stub가 C++언어의 컴파일함수테이블에서 획득한 실제 C++ 라이브러리상의 주소값의 위치로 링킹하여 해당 API를 실행시킨다.
즉, 상기 C++ 의 컴파일함수테이블(Function Table )은 Code 상의 함수이름(Function name )을 그대로 사용 할 수가 없기 때문에 각 함수(Function )들의 분리(Mangling )된 함수이름에 따라 함수포인터(Function Pointer )를 가지는 함수테이블을 독자적으로 만들어 사용해야한다.
따라서, 우선, 컴파일된 라이브러리로부터 함수이름(Symbol) 들을 추출하여 리스트를 만든다. 그리고, 그 리스트를 이용하여 생성한 함수 테이블(Function table) 을 컴파일 하여 라이브러리에 링크(Link)하 므로써 얻어진 컴파일함수테이블(1)은 실제 함수들의 Pointer 를 가지는 배열이 된다. 그리고 상기 컴파일함수테이블(1)을 얻은 C함수를 Export 하여 이 라이브러리(Library) 를 사용할 곳에서 컴파일함수테이블(1)을 얻을 수 있도록 한다.
또한, Stub 는 라이브러리의 함수이름(Symbol name) 과 같은 이름을 가지는 함수로 라이브러리를 사용하는 쪽에서는 Stub 와 Static Link 되고, 실제로 함수를 호출할 때에는 실제 라이브러리의 함수이름과 같은 Stub 의 함수를 호출하게 된다. 그리고, 그 호출된 Stub 함수 에서는 예컨대, 어셈블리 코드 구현과 같이 컴파일함수테이블(1)로부터 실제 함수포인터를 얻어 링킹하여 실제 라이브러리의 함수를 실행시키게 된다.
한편, 본 발명의 컴파일함수테이블의 생성방법은 도 4에 도시된 바와같이 초기상태(S11)에서 컴파일단계(S12)로 진행하여 C++언어로 된 라이브러리의 함수이름들을 컴파일시켜 라이브러리를 생성한다. 그리고, 상기 컴파일단계(S12)후에 심볼추출단계(S13)로 진행하여 컴파일된 라이브러리에서 심볼(함수이름)을 추출한다. 또한, 상기 심볼추출단계(S13)후에 함수ID부여단계(S14)로 진행하여 추출된 심볼(함수이름)에 함수ID를 부여하여 컴파일함수테이블을 갖는 라이브러리를 생성한다.
여기서, 상기 함수ID부여단계(S14)에는 함수ID을 숫자로 부여하는 숫자부여단계를 더 포함한다.
환언하면, 먼저, 본 발명의 컴파일함수테이블을 생성하기위해 일정개발장비(도시안됨)에서C++언어로 된 라이브러리들을 함수이름들을 이용하여 컴파일시켜 라이브러리를 생성한다. 그리고, 상기 장비는 컴파일된 라이브러리에서 심볼(함수이름)을 추출한 다음 그 추출된 심볼(함수이름)에 함수ID 예컨대, 숫자로된 함수ID를 부여하여 컴파일함수테이블을 갖는 라이브러리를 생성한후 단말장비(8)의 ROM(5)에 저장시킨다.
그리고, 상기 과정후에 본 발명의 단말장비(8)는 사용자가 단말장비(8)에 구비된 예컨대, 응용프로그램의 실행을 설정하였을 경우 현재 실행에 필요한 응용프로그램의 실행데이터와 함께 이종언어 예컨대, C나 C++언어로 작성된 라이브러리도 ROM(5)으로부터 RAM(6)으로 로딩시킨다.
또한, 상기와 같이 플랫폼모듈이 로딩되어 실행될 경우 먼저, 단말장비(8)의 주제어부(7)는 현재 실행되는 API의 호출을 위해 RAM(6)에서 예컨대, C언어로 작성된 라이브러리(4)의 Stub(3)에서 C++ 언어로 작성된 라이브러리(2)로 API 주소값을 요구하게 한다.
그러면, 상기 주제어부(7)는 C언어로 작성된 라이브러리(4)의 Stub(3)에서 C++ 언어로 작성된 라이브러리(2)로 API 주소값을 요구할 경우 C 언어 라이브러리(4)의 Stub(3)가 함수이름(심볼)으로 요구한 API 주소값을 C++ 언어 라이브러리(2)의 컴파일함수테이블(1)에서 그 대응되는 같은 함수이름으로 검색하여 획득하게 한다.
그리고, 상기 주제어부(7) C언어의 Stub(3)가 C++언어의 컴파일함수테이블(1)에서 획득한 실제 C++ 라이브러리(2)상의 주소값의 위치로 링킹하여 해당 API를 실행시킨다.
여기서, 상기와 같이 단말장비(8)의 응용프로그램이 실행될 경우 주제어부(7)는 그 실행되는 내용을 디스플레이(11)에 표시함과 더불어 음성신호는 코덱부(13)를 통해 마이크로폰(12)으로 방출시킨다. 이때, 만약 외부로부터 무선모듈부(10)를 통해 무선 호의 착신이 있을 경우 단말장비(8)의 주제어부(7)는 이를 디스플레이(11)나 마이크로폰(12)을 통해 일람해 준다. 그리고, 단말장비(8)의 사용자가 해당 호를 연결시키기를 원할 경우 주제어부(7)는 이동통신망시스템(9)을 통해 상대방 단말기(15)로 응답 호를 전송하므로 통상의 통화를 이루게 된다.
이상 설명에서와 같이 본 발명은  C언어로된 함수에서 C++언어로된 함수를 호출할경우 미리 생성한 컴파일 함수테이블내에서 대응되는 실제 함수의 주소값을 찾아 해당 위치로 링킹하므로써, 그에 따라 플랫폼함수의 이종언어함수간 인터페이스특성을 상당히 향상시키는 장점을 가지고 있다.
또한, 본 발명에 의하면, C++로 함수이름을 컴파일하여 얻어진 함수심볼에 숫자로된 함수ID를 부여한다음 컴파일함수테이블을 구성하기 때문에 이종 언어의 C 함수에서 호출할경우 C언어의 함수가 요구하는 해당 API의 주소값을 신속히 얻어 그 API의 실제주소 위치로 신속히 링킹시킬 수 있으므로 그에 따라 플랫폼의 다이나믹 링킹특성도 상당히 향상시키는 효과도 있다.

Claims (8)

  1. C++언어형태의API주소값을 갖는 컴파일함수테이블이 구비된 C++언어로 작성된 라이브러리와 C언어로 작성되어 컴파일함수테이블과 연계되는 Stub을 갖는 라이브러리를 저장하는 비휘발성메모리인 제1 저장매체와;
    상기 제1 저장매체에 저장된 플랫폼 로딩시 C언어로 작성된 Stub을 갖는 라이브러리와 컴파일함수테이블이 구비된 C++언어로 작성된 라이브러리를 로딩되는 공간인 휘발성메모리의 제2저장매체와;
    상기C 언어로된 라이브러리에서 C++언어로 작성된 라이브러리의 호출과정을 C 언어로된 라이브러리의 Stub와 C++언어로 작성된 라이브러리의 컴파일함수테이블을 참조하여 실제 API의 주소값을 찾아 그 해당 API 위치로 링킹한 다음 호출처리하도록 제어하는 주제어부를 포함하여 구성되는 이종언어편집 라이브러리의 인터페이스 기능이 구비된 단말장비.
  2. 제1항에 있어서,
    상기 주제어부는 C언어로 작성된 라이브러리의 Stub에서 API의 주소값을C++언어로 작성된 라이브러리의 컴파일함수테이블로 요구할 경우 함수이름으로 요구하도록 제어하는 것을 특징으로 하는 이종언어편집 라이브러리의 인터페이스 기능이 구비된 단말장비.
  3. 제1항에 있어서,
    상기 단말장비에는 무선모듈이 구비된 PDA, 무선모듈이 구비된 노트북, 무선모듈이 구비된 PC 및 휴대폰을 포함하여 구성되는 이종언어편집 라이브러리의 인터페이스 기능이 구비된 단말장비.
  4. 제1항에 있어서,
    상기 Stub는 다른 C언어로 작성된 라이브러리의 주소값을 호출함과 더불어 C++언어로 작성된 라이브러리의 컴파일함수테이블로 함수이름을 통해 실행을 원하는 API의 주소값을 호출하는 것을 특징으로 하는 이종언어편집 라이브러리의 인터페이스 기능이 구비된 단말장비.
  5. 단말장비에서C언어로 작성된 라이브러리의 Stub에서 C++ 언어로 작성된 라이브러리로 API 주소값을 요구하는 지를 확인한다. 주소값요구 확인과정과;
    상기 주소값요구 확인과정중에 확인한결과 C언어로 작성된 라이브러리의 Stub에서 C++ 언어로 작성된 라이브러리로 API 주소값을 요구할 경우 C 언어 라이브러리의 Stub가 함수이름으로 요구한 API 주소값을 C++ 언어 라이브러리의 컴파일함수테이블에서 그 대응되는 같은 함수이름으로 검색하여 획득하는 실제주소값 획득과정과;
    상기 실제주소값 획득과정후에 C언어의 Stub가 C++언어의 컴파일함수테이블에서 획득한 실제 C++ 라이브러리상의 주소값의 위치로 링킹하여 해당 API를 실행 시키는 C++ API링킹과정;을 포함하여 구성되는 API호출 방법.
  6. 제5항에 있어서,
    상기 주소값요구 확인과정에는 C언어로 작성된 라이브러리의 Stub가 C++ 언어로 작성된 라이브러리로 API 주소값을 요구할 때 함수이름을 이용하여 요구하는 함수이름 요구단계를 더 포함하여 구성되는 API호출 방법.
  7. C++언어로 된 단말장비의 라이브러리의 함수이름들을 컴파일시켜 라이브러리를 생성하는 컴파일단계와;
    상기 컴파일단계후에 컴파일된 라이브러리에서 심볼(함수이름)을 추출하는 심볼추출단계와;
    상기 심볼추출단계후에 추출된 심볼(함수이름)에 함수ID를 부여하여 컴파일함수테이블을 갖는 라이브러리를 생성하는 함수ID부여단계를 포함하여 구성되는 컴파일함수생성방법.
  8. 제7항에 있어서,
    상기 함수ID부여단계에는 함수ID을 숫자로 부여하는 숫자부여단계를 더 포함하여 구성되는 컴파일함수생성방법.
KR1020060106799A 2006-10-31 2006-10-31 이종언어편집 라이브러리의 인터페이스 기능이 구비된단말장비, api호출방법 및 컴파일함수생성방법 KR20080039080A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020060106799A KR20080039080A (ko) 2006-10-31 2006-10-31 이종언어편집 라이브러리의 인터페이스 기능이 구비된단말장비, api호출방법 및 컴파일함수생성방법
PCT/KR2007/005036 WO2008054074A1 (en) 2006-10-31 2007-10-15 Terminal device having function of interfacing compilation libraries in heterogeneous languages, method of calling api, and method of creating compile function

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060106799A KR20080039080A (ko) 2006-10-31 2006-10-31 이종언어편집 라이브러리의 인터페이스 기능이 구비된단말장비, api호출방법 및 컴파일함수생성방법

Publications (1)

Publication Number Publication Date
KR20080039080A true KR20080039080A (ko) 2008-05-07

Family

ID=39344397

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060106799A KR20080039080A (ko) 2006-10-31 2006-10-31 이종언어편집 라이브러리의 인터페이스 기능이 구비된단말장비, api호출방법 및 컴파일함수생성방법

Country Status (2)

Country Link
KR (1) KR20080039080A (ko)
WO (1) WO2008054074A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110990018A (zh) * 2019-10-29 2020-04-10 北京全路通信信号研究设计院集团有限公司 一种嵌入式系统的编译部署方法、编译方法及编译系统
CN112306539A (zh) * 2020-11-05 2021-02-02 重庆科技学院 一种单片机应用层开发方法、系统、终端及介质
US11307990B2 (en) * 2019-08-30 2022-04-19 Advanced New Technologies Co., Ltd. Deploying a smart contract

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0712654D0 (en) * 2007-06-28 2007-08-08 Symbian Software Ltd Computing device having an embedded rom image
CN109783077B (zh) * 2018-12-14 2023-07-11 平安科技(深圳)有限公司 区块链系统及其中间件系统、数据上链方法、存储介质
CN112416470B (zh) * 2019-08-22 2023-08-25 腾讯科技(深圳)有限公司 命令的执行方法和装置、存储介质及电子装置
CN114840204A (zh) * 2021-02-02 2022-08-02 华为技术有限公司 非同名符号的函数跳转方法、装置及计算机可读存储介质
CN113448655B (zh) * 2021-07-09 2022-06-17 赞同科技股份有限公司 C标准动态库的调用方法与装置
CN113805994A (zh) * 2021-09-06 2021-12-17 维沃移动通信有限公司 应用程序控制方法、装置、电子设备及存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69911104T2 (de) * 1998-03-24 2004-07-08 Sun Microsystems, Inc., Palo Alto Statische Bindung von dynamisch abgesendeten Anrufen in Anwesenheit von dynamischer Verknüpfung und Ladung
US7434209B2 (en) * 2003-07-15 2008-10-07 Transitive Limited Method and apparatus for performing native binding to execute native code
KR100478463B1 (ko) * 2003-07-22 2005-03-23 재단법인서울대학교산학협력재단 응용 프로그램의 동적링크 방법
KR100561682B1 (ko) * 2003-10-10 2006-03-15 에스케이 텔레콤주식회사 그룹 별 api 관리를 지원하는 모바일 플랫폼이 탑재된이동 통신 단말 및 모바일 플랫폼에서의 api 제어 방법

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11307990B2 (en) * 2019-08-30 2022-04-19 Advanced New Technologies Co., Ltd. Deploying a smart contract
CN110990018A (zh) * 2019-10-29 2020-04-10 北京全路通信信号研究设计院集团有限公司 一种嵌入式系统的编译部署方法、编译方法及编译系统
CN110990018B (zh) * 2019-10-29 2023-03-24 北京全路通信信号研究设计院集团有限公司 一种嵌入式系统的编译方法及编译系统
CN112306539A (zh) * 2020-11-05 2021-02-02 重庆科技学院 一种单片机应用层开发方法、系统、终端及介质
CN112306539B (zh) * 2020-11-05 2023-08-01 重庆科技学院 一种单片机应用层开发方法、系统、终端及介质

Also Published As

Publication number Publication date
WO2008054074A1 (en) 2008-05-08

Similar Documents

Publication Publication Date Title
KR20080039080A (ko) 이종언어편집 라이브러리의 인터페이스 기능이 구비된단말장비, api호출방법 및 컴파일함수생성방법
JP2008234673A (ja) モバイル・デバイスのアプリケーション・インストール管理システムおよび方法
US7974829B2 (en) System for simulating mobile phone and method thereof
US9183011B2 (en) Method and system for runtime environment emulation
CN112306533A (zh) 前端框架自动转换方法、装置、计算机设备及存储介质
JP4961019B2 (ja) Efiベースのファームウェアにおいてpeiモジュールについてグローバル変数を利用する方法
US20080301719A1 (en) Mapping Of Dynamic Link Libraries In Computing Devices
CN114443051A (zh) 应用程序编译和运行方法及装置、存储介质
CN114461223A (zh) 一种代码生成方法、装置及终端设备
CN116685946A (zh) 在不停止应用的执行的情况下的更新的共享库的重新加载
US20040205744A1 (en) Management of co-processor information by integrating non-program information with program information
KR101182534B1 (ko) 플랫폼 라이브러리내 상호 에이피아이 호출기능이 구비된단말장비, dsl 모듈 생성방법 및 상호 에이피아이호출방법
CN110334031A (zh) 内存分配代码检测方法、装置、计算机设备及存储介质
CN111596997B (zh) Ui信息的请求方法、装置、终端和存储介质
KR20080027293A (ko) 데이터 언어에서 다수 언어들의 관리
CN111949301B (zh) 应用程序热更新方法、装置和计算机可读存储介质
KR101273914B1 (ko) 플랫폼 라이브러리 다이나믹 링킹기능이구비된 단말장비 및 그 제어방법
US20050149270A1 (en) Componentware creating method, apparatus and recording medium
JP2012133567A (ja) 情報処理装置、情報処理装置の制御方法、プログラム。
US7702890B2 (en) Information processing apparatus and program
CN111273910B (zh) 获取资源号码标识符的方法、装置及存储介质
US7831965B1 (en) Method and apparatus for facilitating intermediate linking of binary files in a virtual machine
CN115658276B (zh) 业务开发方法、装置、电子设备及可读存储介质
CN113504936B (zh) 软件版本发布方法、计算机设备及存储介质
US20080005160A1 (en) Assembly Sensitive Dynamic Classloading Of .Net Types in J#

Legal Events

Date Code Title Description
N231 Notification of change of applicant
WITN Withdrawal due to no request for examination