KR20100110710A - 동적 라이브러리를 갖는 인터페이스를 간단히 하는 방법, 시스템 및 컴퓨터 프로그램 제품 - Google Patents

동적 라이브러리를 갖는 인터페이스를 간단히 하는 방법, 시스템 및 컴퓨터 프로그램 제품 Download PDF

Info

Publication number
KR20100110710A
KR20100110710A KR1020090085967A KR20090085967A KR20100110710A KR 20100110710 A KR20100110710 A KR 20100110710A KR 1020090085967 A KR1020090085967 A KR 1020090085967A KR 20090085967 A KR20090085967 A KR 20090085967A KR 20100110710 A KR20100110710 A KR 20100110710A
Authority
KR
South Korea
Prior art keywords
implementation
interface class
stub
pointer
instructions
Prior art date
Application number
KR1020090085967A
Other languages
English (en)
Other versions
KR101392046B1 (ko
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 엘에스아이 코포레이션
Publication of KR20100110710A publication Critical patent/KR20100110710A/ko
Application granted granted Critical
Publication of KR101392046B1 publication Critical patent/KR101392046B1/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/445Program loading or initiating
    • 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/4488Object-oriented

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

방법은 구현 포인터를 갖는 정적 요소를 포함하는 인터페이스 클래스를 정의하는 단계를 포함할 수 있다. 이 방법은 또한 인터페이스 클래스의 스터브 구현을 포함하는 메인 코드 세그먼트를 로딩하는 단계를 포함할 수 있다. 또한, 이 방법은 스터브 구현 객체를 제공하기 위해 인터페이스 클래스의 스터브 구현을 실현하는 단계를 포함할 수 있다. 인터페이스 클래스의 스터브 구현은 구현 포인터를 스터브 구현 객체로 설정하도록 구성된 제 1 구성자를 포함할 수 있다. 또한, 이 방법은 인터페이스 클래스의 실제 구현을 포함하는 동적 라이브러리를 로딩하는 단계를 포함할 수 있다. 더 나아가, 방법은 실제 구현 객체를 제공하기 위해 인터페이스 클래스의 실제 구현을 실현하는 단계를 포함할 수 있다. 인터페이스 클래스의 실제 구현은 구현 포인터를 실제 구현 객체로 설정하도록 구성된 제 2 구성자를 포함할 수 있다.

Description

동적 라이브러리를 갖는 인터페이스를 간단히 하는 방법, 시스템 및 컴퓨터 프로그램 제품{METHOD FOR SIMPLIFYING INTERFACES HAVING DYNAMIC LIBRARIES}
본 발명은 일반적으로 컴퓨터 프로그래밍 분야에 관한 것으로, 특히 동적 라이브러리를 갖는 인터페이스를 간단히 하는 시스템, 방법 및 컴퓨터 프로그램 제품에 관한 것이다.
동적 라이브러리는 코드가 컴퓨터 프로그램의 실행을 위해 요구될 때까지 그 코드를 메모리 내로 로딩하는 것을 피하는데 사용될 수 있다. 미약 심볼 결합 기능(weak symbol linkage functionality)을 포함하는 링커(linker)는 컴퓨터 프로그램의 메인 코드가 링크-시간 에러(link-time error)를 야기하는 일 없이 동적 라이브러리 내의 심볼을 참조할 수 있도록 해준다. 그러나, 이러한 유형의 링커는 심볼을 이용하는 경우 런-타임 에러(run-time error)를 체크하기 위해 이들 심볼을 참조하는 코드를 필요로 한다. 또한, 몇몇 링커는 미약 심볼 결합 기능을 지원하지 않고/않거나 미약 심볼 결합 기능은 일부 환경에서는 비활성화(disable)될 수 있다. 이들 경우에, 컴퓨터 프로그램의 메인 코드 세그먼트는 링크-시간 에러를 야기하는 일 없이 동적 라이브러리 내의 심볼을 참조하기는 어려울 수 있다.
이와 달리, 또 다른 접근방법은 심볼 테이블 내에 포함될 메인 코드에 의해 참조될 수 있는 동적 라이브러리 내의 모든 심볼을 요구할 수 있다. 이러한 구현에 있어서, 메인 코드는 이들 심볼의 존재를 체크하기 위해 이들 심볼을 참조하는 경우 심볼 테이블 룩업 루틴(symbol table lookup routines)을 이용한다. 그런 다음, 필요한 심볼이 발견된 경우, 그 심볼은 링크-시간 에러를 피하기 위해 포인터를 통해 액세스될 수 있다.
상기 기법은 컴퓨터 프로그램 환경에 불필요한 복잡성을 야기하는 한편, 심볼 테이블의 크기를 증가시키고 또한 심볼 테이블 룩업의 결과를 수행하고 체크하기 위해 추가적인 런-타임 체크를 요구할 수 있다.
본 발명의 일실시예에 따른 방법은 구현 포인터(implementation pointer)를 갖는 정적 요소(static member)를 포함하는 인터페이스 클래스(interface class)를 정의하는 단계를 포함할 수 있다. 이 방법은 또한 인터페이스 클래스의 스터브 구현(stub implementation)을 포함하는 메인 코드 세그먼트를 로딩하는 단계를 포함할 수 있다. 또한, 이 방법은 스터브 구현 객체를 제공하기 위해 인터페이스 클래 스의 스터브 구현을 실현(instantiate)하는 단계를 포함할 수 있다. 인터페이스 클래스의 스터브 구현은 구현 포인터를 스터브 구현 객체로 설정하도록 구성된 제 1 구성자(constructor)를 포함할 수 있다. 또한, 이 방법은 인터페이스 클래스의 실제 구현을 포함하는 동적 라이브러리를 로딩하는 단계를 포함할 수 있다. 더 나아가, 방법은 실제 구현 객체를 제공하기 위해 인터페이스 클래스의 실제 구현을 실현하는 단계를 포함할 수 있다. 인터페이스 클래스의 실제 구현은 구현 포인터를 실제 구현 객체로 설정하도록 구성된 제 2 구성자를 포함할 수 있다.
컴퓨터 프로그래밍 제품은 구현 포인터를 갖는 정적 요소를 포함하는 인터페이스 클래스를 정의하는 하나 이상의 인스트럭션을 내장하는 신호 내장 매체를 포함할 수 있다. 컴퓨터 프로그래밍 제품은 인터페이스 클래스의 스터브 구현을 포함하는 메인 코드 세그먼트를 로딩하는 하나 이상의 인스트럭션을 포함할 수 있다. 또한, 컴퓨터 프로그래밍 제품은 스터브 구현 객체를 제공하기 위해 인터페이스 클래스의 스터브 구현을 실현하는 하나 이상의 인스트럭션을 포함할 수 있다. 인터페이스 클래스의 스터브 구현은 구현 포인터를 스터브 구현 객체로 설정하도록 구성된 제 1 구성자를 포함할 수 있다. 또한, 컴퓨터 프로그래밍 제품은 인터페이스 클래스의 실제 구현을 포함하는 동적 라이브러리를 로딩하는 하나 이상의 인스트럭션을 포함할 수 있다. 더 나아가, 컴퓨터 프로그래밍 제품은 실제 구현 객체를 제공하기 위해 인터페이스 클래스의 실제 구현을 실현하는 하나 이상의 인스트럭션을 포함할 수 있다. 인터페이스 클래스의 실제 구현은 구현 포인터를 실제 구현 객체로 설정하도록 구성된 제 2 구성자를 포함할 수 있다.
시스템은 컴퓨팅 디바이스와 인스트럭션을 포함할 수 있고, 이 인스트럭션은 컴퓨팅 디바이스에 대해 실행되는 경우 컴퓨팅 디바이스로 하여금 구현 포인터를 갖는 정적 요소를 포함하는 인터페이스 클래스를 정의하도록 지시한다. 시스템은 컴퓨팅 디바이스에 대해 실행되는 경우 이 컴퓨터 디바이스로 하여금 인터페이스 클래스의 스터브 구현을 포함하는 메인 코드 세그먼트를 로딩하도록 지시하는 인스트럭션을 또한 포함할 수 있다. 또한, 시스템은 컴퓨팅 디바이스에 대해 실행되는 경우 컴퓨팅 디바이스로 하여금 스터브 구현 객체를 제공하기 위해 인터페이스 클래스의 스터브 구현을 실현하도록 지시하는 인스트럭션을 포함할 수 있다. 인터페이스 클래스의 스터브 구현은 구현 포인터를 스터브 구현 객체로 설정하도록 구성된 제 1 구성자를 포함할 수 있다. 또한, 이 시스템은 컴퓨팅 디바이스에 대해 실행되는 경우 컴퓨터 디바이스로 하여금 인터페이스 클래스의 실제 구현을 포함하는 동적 라이브러리를 로딩하도록 지시하는 인스트럭션을 포함할 수 있다. 더 나아가, 시스템은 컴퓨팅 디바이스에 대해 실행되는 경우 컴퓨팅 디바이스로 하여금 실제 구현 객체를 제공하기 위해 인터페이스 클래스의 실제 구현을 실현하도록 지시하는 인스트럭션을 포함할 수 있다. 인터페이스 클래스의 실제 구현은 구현 포인터를 실제 구현 객체로 설정하도록 구성된 제 2 구성자를 포함할 수 있다.
전술한 전반적인 설명 및 후속하는 상세한 설명은 단지 예시적이고 설명적일 뿐이며, 본 발명을 제한할 필요는 없음을 이해해야 한다. 본 명세서에 합체되면서 본 명세서의 일부를 구성하는 첨부한 도면은 본 발명을 예시한다. 상세한 설명 및 도면은 본 발명의 원리를 설명한다.
당업자라면 첨부한 도면을 참조하여 본 발명의 다수의 장점을 보다 잘 이해할 수 있을 것이다.
첨부한 도면에 예시되어 있는 내용을 보다 자세히 설명할 것이다.
전반적으로 도 1 및 도 2를 참조하면, 본 발명에 따른 방법(200)이 기술되어 있다. 일반적으로, 방법(200)은 (수정가능한 구현 포인터를 갖는) 강화된 싱글톤 패턴(enhanced signleton pattern)과 결합된 C++ 상속 기법을 이용한다. 이러한 식으로, 방법(200)은 특정 라이브러리가 로딩되어 있지 않은 경우에도 동적 라이브러리 심볼에의 액세스를 제공할 수 있다. 예를 들어, 메인 코드 세그먼트(102)에 의해 액세스될 필요가 있는 동적 라이브러리(100) 내의 심볼은 추상 C++ 싱글톤 인터페이스 클래스(abstract C++ singleton interface class)의 요소로서 포함될 수 있다. 동적 라이브러리(100)는 인터페이스(108)의 실제 구현(104)을 포함하는 하나의 C++ 싱글톤 클래스를 포함하고, 메인 코드 세그먼트(102)는 인터페이스(108)의 스터브 구현(106)을 포함하는 또 다른 C++ 싱글톤 클래스를 포함한다. 싱글톤 설계 패턴에서와 같이, 인터페이스 클래스의 정적 요소는 구현 클래스에 대한 포인터를 포함한다. 초기에, 이 포인터는 스터브 구현 객체를 포인팅하지만, 동적 라이브러리(100)가 로딩된 경우에는, 구성자가 동적 라이브러리(100)로부터의 실제 구현 객체를 포인팅하도록 포인터를 수정한다.
후속하는 설명은 소정의 특이성을 갖는 C++ 구문 및 구조를 이용한다. 예를 들어, 후속하는 설명은 강화된 싱글톤 인터페이스 클래스로서 설명되는 인터페이스 클래스를 포함한다. 보다 구체적으로, 이 강화된 싱글톤 인터페이스 클래스는 추상 C++ 싱글톤 인터페이스 클래스로서 구현된다. 그러나, 이 설명은 해설적 의미로서 제공될 뿐이며, 본 발명을 제한하려는 의도는 없다. 예를 들어, 이하의 설명은 C++를 참조하지만, 인캡슐레이션(encapsulation)을 이용하거나 C++와 유사한 상속(inheritance) 특성을 포함하는 임의의 프로그래밍 언어가 본 발명에 이용될 수 있다. 하나의 특정 실시예에서, C 프로그래밍 언어가 사용될 수 있다. C 구현에 있어서, 이하에서 설명되는 스터브 구현은 포인터들의 제 1 어레이를 포함할 수 있는 한편, 실제 구현은 포인터의 제 2 어레이(각 심볼 대신 하나의 포인터가 사용됨)를 포함할 수 있다. 이 구현에 있어서, 각 심볼은 어레이를 인덱싱함으로써 액세스될 수 있다.
이제 방법(200)을 참조하면(특히 도 1에 도시되어 있는 클래스 도표를 주목하되, 도 1은 이들 관계를 나타내고 있음), 우선, 구현 포인터를 갖는 정적 요소를 포함하는 인터페이스 클래스(108)가 정의된다(210). 그 다음, 동적 라이브러리(100)가 로딩되기 전에, 인터페이스 클래스(108)의 스터브 구현(106)을 포함하는 메인 코드 세그먼트(102)가 로딩된다(202). 다음으로, 스터브 구현 객체를 제공하기 위해 스터브 구현(106)은 실현된다. 인터페이스 클래스(108)의 스터브 구현(106)은 구현 포인터를 스터브 객체로 설정하도록 구성된 제 1 구성자(110)를 포함한다(230). 예를 들어, 표준 싱글톤 패턴에서와 같이, 제 1 구성자(110)는 구현 객체(이 경우, 스터브구현 객체)를 포인팅하도록 구현 포인터를 설정하는데 "Interface::setInstance()"를 이용할 수 있다. 클라이언트(112)가 심볼(114)을 액세스하는 경우, 클라이언트(112)는 "Interface::getInstance()->symbol1()" 구문을 이용할 수 있다. 이 경우, 실제로 호출되는 루틴은 "StubImplementation::symbol1()"이다.
소정의 시점에서, 인터페이스 클래스(108)의 실제 구현(104)을 포함하는 동적 라이브러리(100)가 로딩된다(240). 그런 다음, 실제 구현 객체를 제공하기 위해 실제 구현(104)이 실현(instantiate)된다. 인터페이스 클래스(108)의 실제 구현(104)은 구현 포인터를 실제 구현 객체로 설정하도록 구성된 제 2 구성자(116)를 포함한다(250). 예를 들어, 제 2 구성자(116)는 실제구현 객체를 포인팅하도록 구현 포인터를 설정하는데 "Interface:setInstance()"를 이용할 수 있다. 이어서, 클라이언트(112)가 "Interface::getInstance()->symbol1()" 구문을 이용하는 경우, 실제로 호출되는 루틴은 "RealImplementation::symbol1()"이다.
제 2 구성자가 구현 포인터를 실제 구현 객체로 설정하기 전에(방법(200)의 단계(250)를 참조), 구현 포인터의 사본이 저장될 수 있는 한편, 구현 포인터는 스터브 구현 객체로 설정된다(260). 소정의 시간 이후, 동적 라이브러리(100)가 언로딩(unload)되는 경우, 실제구현의 해체자(destructor)(118)는 "Interface::unsetInstance()"와 같은 구문을 사용하여 본래의 값으로 인터페이스 포인터를 복원할 수 있다. 예를 들어, 인터페이스 클래스의 동적 라이브러리 및 실제 구현은 언로딩될 수 있다(270). 그런 다음, 구현 포인터는 구현 포인터의 저장된 사본으로 설정될 수 있다(280). 일 실시예에서, Implementation::originalImplementation 포인터가 사용된다. 이 실시예에서, 이 포인터는 "Interface::setInstance()"의 첫 번째 호출에 의해 미리 할당되었다.
도 3은 컴퓨팅 디바이스 상에서 컴퓨터 프로세스를 실행시키는 컴퓨터 프로그램(304)을 포함하는 예시적인 컴퓨터 프로그램 제품(300)의 일부를 나타낸다. 예시적인 컴퓨터 프로그램 제품(300)의 일 실시예는 신호 내장 매체(302)를 사용하는 것으로 제공되고, 구현 포인터를 갖는 정적 요소를 포함하는 인터페이스 클래스를 정의하는 단계와, 인터페이스 클래스의 스터브 구현을 포함하는 메인 코드 세그먼트를 로딩하는 단계와, 스터브 구현 객체를 제공하기 위해 인터페이스 클래스의 스터브 구현을 실현(instantiate)하는 단계- 인터페이스 클래스의 스터브 구현은 구현 포인터를 스터브 구현 객체로 설정하도록 구성된 제 1 구성자를 포함함 -와, 인터페이스 클래스의 실제 구현을 포함하는 동적 라이브러리를 로딩하는 단계와, 실제 구현 객체를 제공하기 위해 인터페이스 클래스의 실제 구현을 실현하는 단계- 인터페이스 클래스의 실제 구현은 구현 포인터를 실제 구현 객체로 설정하도록 구성된 제 2 구성자를 포함함 -를 실행시키는 하나 이상의 인스트럭션을 포함할 수 있다. 하나 이상의 인스트럭션은 예를 들어 컴퓨터 실행가능 및/또는 로직 구현 인스트럭션일 수 있다. 일 실시예에서, 신호 내장 매체(302)는 컴퓨터 판독가능 매체(306)를 포함할 수 있다. 일 실시예에서, 신호 내장 매체(302)는 기록가능 매체(308)를 포함할 수 있다. 일 실시예에서, 신호 내장 매체(302)는 통신 매체(310)를 포함할 수 있다.
도 4는 실시예들이 구현될 수 있는 예시적인 시스템(400)을 나타낸다. 시스 템(400)은 컴퓨팅 시스템 환경을 포함한다. 시스템(400)은 또한 선택적 결합(406)을 통해 컴퓨팅 디바이스(402)와 통신하는 것으로 선택적으로 도시되어 있는 디바이스(404)를 사용하는 사용자(412)를 나타낸다. 선택적 결합(406)은 근거리, 광역 또는 피어투피어(peer-to-peer) 네트워크를 나타낼 수 있거나, 또는 컴퓨팅 디바이스에 내부적인 버스(bus)를 나타낼 수 있다(예를 들어, 예시적인 실시예에서, 컴퓨팅 디바이스(402)는 디바이스(404) 내에 완전히 또는 부분적으로 포함된다). 저장 매체(408)는 임의의 컴퓨터 저장 매체일 수 있다.
컴퓨팅 디바이스(402)는 컴퓨팅 디바이스(402) 상에서 실행되는 경우 컴퓨팅 디바이스(402)로 하여금 구현 포인터를 갖는 정적 요소를 포함하는 인터페이스 클래스를 정의하고, 인터페이스 클래스의 스터브 구현을 포함하는 메인 코드 세그먼트를 로딩하며, 스터브 구현 객체를 제공하기 위해 인터페이스 클래스의 스터브 구현을 실현(instantiate)- 인터페이스 클래스의 스터브 구현은 구현 포인터를 스터브 구현 객체로 설정하도록 구성된 제 1 구성자를 포함함 -하며, 인터페이스 클래스의 실제 구현을 포함하는 동적 라이브러리를 로딩하고, 실제 구현 객체를 제공하기 위해 인터페이스 클래스의 실제 구현을 실현- 인터페이스 클래스의 실제 구현은 구현 포인터를 실제 구현 객체로 설정하도록 구성된 제 2 구성자를 포함함 -하도록 야기하는 컴퓨터 실행가능 인스트럭션을 포함한다. 전술하고 도 4에 도시되어 있는 바와 같이, 일부 예에 있어서, 컴퓨팅 디바이스(402)는 선택에 따라 디바이스(404) 내에 완전히 또는 부분적으로 포함될 수 있다.
도 4에서, 시스템(400)은 적어도 하나의 컴퓨팅 디바이스(예를 들어, 402 및 /또는 404)를 포함한다. 컴퓨터 실행가능 인스트럭션(410)은 적어도 하나의 컴퓨팅 디바이스들 중 하나 이상에 대해 실행될 수 있다. 예를 들어, 컴퓨팅 디바이스(402)는 컴퓨터 구현가능 인스트럭션(410)을 구현할 수 있고 결과를 컴퓨팅 디바이스(404)로 출력할 수 있다(및/또는 컴퓨팅 디바이스(404)로부터 데이터를 수신할 수 있다). 컴퓨팅 디바이스(402)는 컴퓨팅 디바이스(404) 내에 완전히 또는 부분적으로 포함될 수 있기 때문에, 디바이스(404)는 또한 본 명세서에서 기술되어 있는 다양한 기법 또는 그 밖의 다른 기법을 수행 또는 구현하기 위해 컴퓨터 실행가능 인스트럭션(410)들 중 일부 또는 전부를 구현할 수 있다고 할 수 있을 것이다.
디바이스(404)는 예를 들어 휴대용 컴퓨팅 디바이스, 워크스테이션 또는 데스크탑 컴퓨팅 디바이스를 포함할 수 있다. 또 다른 예시적인 실시예에서, 컴퓨팅 디바이스(402)는 사용자 데이터에 적어도 부분적으로 기초하여 데이터 액세스 및 데이터 프로세싱을 수행하고 동적 라이브러리를 갖는 간단한 인터페이스의 출력을 제공하기 위해 사용자(412)와 연관된 디바이스(404)와 통신하여 사용자(412)로부터의 입력에 대한 정보를 수신한다.
본 명세서에 있어서, 개시되어 있는 방법은 디바이스에 의해 판독가능한 인스트럭션 또는 소프트웨어의 세트에 따라 구현될 수 있다. 더 나아가, 개시되어 있는 방법 내의 단계들의 특정 순서 또는 계층은 예시적인 접근방법의 예일뿐이다. 설계 선호도에 기초하여, 방법 내의 단계들의 특정 순서 또는 계층은 개시되어 있는 주제 내에서 재정렬될 수 있다. 첨부한 방법 청구항은 다양한 단계들의 요소를 표본 순서로 제공하고 있을 뿐, 제시되어 있는 특정 순서 또는 계층으로 국한시키 려는 의도는 없다.
본 발명 및 그에 따른 다수의 장점은 전술한 상세한 설명으로부터 이해될 것이며, 개시되어 있는 주제를 벗어나지 않거나 또는 본 발명의 모든 장점을 희생시키는 일 없이 본 발명의 구성요소의 형식, 구성 및 배열에 대해 다양한 변경이 이루어질 수 있음은 자명할 것이다. 개시되어 있는 형태는 단지 예시일 뿐이고, 후속하는 청구항은 이러한 변경을 수용 및 포함하려 한다.
도 1은 본 발명에 따른 다수의 클래스를 나타내는 클래스 도면,
도 2는 본 발명에 따른 방법을 나타내는 흐름도,
도 3은 본 발명에 따른 컴퓨터 프로그램 제품의 일부분을 나타내는 도면,
도 4는 본 발명에 따른 예시적인 시스템의 일부분을 나타내는 도면.

Claims (20)

  1. 구현 포인터(implementation pointer)를 갖는 정적 요소(static member)를 포함하는 인터페이스 클래스(interface class)를 정의하는 단계와,
    상기 인터페이스 클래스의 스터브 구현(stub implementation)을 포함하는 메인 코드 세그먼트를 로딩하는 단계와,
    스터브 구현 객체를 제공하기 위해 상기 인터페이스 클래스의 스터브 구현을 실현(instantiate)하는 단계- 상기 인터페이스 클래스의 상기 스터브 구현은 상기 구현 포인터를 상기 스터브 구현 객체로 설정하도록 구성된 제 1 구성자(constructor)를 포함함 -와,
    상기 인터페이스 클래스의 실제 구현(real implementation)을 포함하는 동적 라이브러리를 로딩하는 단계와,
    실제 구현 객체를 제공하기 위해 상기 인터페이스 클래스의 상기 실제 구현을 실현(instantiate)하는 단계- 상기 인터페이스 클래스의 상기 실제 구현은 상기 구현 포인터를 상기 실제 구현 객체로 설정하도록 구성된 제 2 구성자를 포함함 -를 포함하는
    방법.
  2. 제 1 항에 있어서,
    상기 구현 포인터의 사본을 저장하는 한편 상기 구현 포인터가 상기 스터브 구현 객체로 설정되도록 하는 단계를 더 포함하는
    방법.
  3. 제 2 항에 있어서,
    상기 인터페이스 클래스의 상기 동적 라이브러리 및 상기 실제 구현을 언로딩(unload)하는 단계를 더 포함하는
    방법.
  4. 제 3 항에 있어서,
    상기 구현 포인터의 저장된 사본으로 상기 구현 포인터를 설정하는 단계를 더 포함하는
    방법.
  5. 제 1 항에 있어서,
    상기 인터페이스 클래스는 강화된 싱글톤 인터페이스 클래스(enhanced singleton interface class)인
    방법.
  6. 제 5 항에 있어서,
    상기 강화된 싱글톤 인터페이스 클래스는 추상 C++ 싱글톤 인터페이스 클래스(abstract C++ singleton interface class)인
    방법.
  7. 제 1 항에 있어서,
    상기 스터브 구현은 포인터의 제 1 어레이를 포함하고, 상기 실제 구현은 포인터의 제 2 어레이를 포함하는
    방법.
  8. 구현 포인터(implementation pointer)를 갖는 정적 요소(static member)를 포함하는 인터페이스 클래스(interface class)를 정의하는 하나 이상의 인스트럭션과,
    상기 인터페이스 클래스의 스터브 구현(stub implementation)을 포함하는 메인 코드 세그먼트를 로딩하는 하나 이상의 인스트럭션과,
    스터브 구현 객체를 제공하기 위해 상기 인터페이스 클래스의 스터브 구현을 실현(instantiate)- 상기 인터페이스 클래스의 상기 스터브 구현은 상기 구현 포인터를 상기 스터브 구현 객체로 설정하도록 구성된 제 1 구성자(constructor)를 포함함 -하는 하나 이상의 인스트럭션과,
    상기 인터페이스 클래스의 실제 구현(real implementation)을 포함하는 동적 라이브러리를 로딩하는 하나 이상의 인스트럭션과,
    실제 구현 객체를 제공하기 위해 상기 인터페이스 클래스의 상기 실제 구현을 실현(instantiate)- 상기 인터페이스 클래스의 상기 실제 구현은 상기 구현 포인터를 상기 실제 구현 객체로 설정하도록 구성된 제 2 구성자를 포함함 -하는 하나 이상의 인스트럭션을 내장하는 신호 내장 매체를 포함하는
    컴퓨터 프로그래밍 제품.
  9. 제 8 항에 있어서,
    상기 구현 포인터의 사본을 저장하는 한편 상기 구현 포인터가 상기 스터브 구현 객체로 설정되도록 하는 하나 이상의 인스트럭션을 더 포함하는
    컴퓨터 프로그래밍 제품.
  10. 제 9 항에 있어서,
    상기 인터페이스 클래스의 상기 동적 라이브러리 및 상기 실제 구현을 언로딩(unload)하는 하나 이상의 인스트럭션을 더 포함하는
    컴퓨터 프로그래밍 제품.
  11. 제 10 항에 있어서,
    상기 구현 포인터를 상기 구현 포인터의 저장된 사본으로 설정하는 하나 이상의 인스트럭션을 더 포함하는
    컴퓨터 프로그래밍 제품.
  12. 제 8 항에 있어서,
    상기 인터페이스 클래스는 강화된 싱글톤 인터페이스 클래스(enhanced singleton interface class)인
    컴퓨터 프로그래밍 제품.
  13. 제 12 항에 있어서,
    상기 강화된 싱글톤 인터페이스 클래스는 추상 C++ 싱글톤 인터페이스 클래스(abstract C++ singleton interface class)인
    컴퓨터 프로그래밍 제품.
  14. 제 8 항에 있어서,
    상기 스터브 구현은 포인터의 제 1 어레이를 포함하고, 상기 실제 구현은 포인터의 제 2 어레이를 포함하는
    컴퓨터 프로그래밍 제품.
  15. 컴퓨팅 디바이스와,
    상기 컴퓨팅 디바이스 상에서 실행되는 경우 상기 컴퓨팅 디바이스로 하여금,
    구현 포인터(implementation pointer)를 갖는 정적 요소(static member)를 포함하는 인터페이스 클래스(interface class)를 정의하고,
    상기 인터페이스 클래스의 스터브 구현(stub implementation)을 포함하는 메인 코드 세그먼트를 로딩하며,
    스터브 구현 객체를 제공하기 위해 상기 인터페이스 클래스의 스터브 구현을 실현(instantiate)- 상기 인터페이스 클래스의 상기 스터브 구현은 상기 구현 포인터를 상기 스터브 구현 객체로 설정하도록 구성된 제 1 구성자(constructor)를 포함함 -하고,
    상기 인터페이스 클래스의 실제 구현(real implementation)을 포함하는 동적 라이브러리를 로딩하며,
    실제 구현 객체를 제공하기 위해 상기 인터페이스 클래스의 상기 실제 구현을 실현(instantiate)- 상기 인터페이스 클래스의 상기 실제 구현은 상기 구현 포인터를 상기 실제 구현 객체로 설정하도록 구성된 제 2 구성자를 포함함 -하도록 지시하는 인스트럭션을 포함하는
    시스템.
  16. 제 15 항에 있어서,
    상기 컴퓨팅 디바이스 상에서 실행되는 경우 상기 컴퓨팅 디바이스로 하여금 상기 구현 포인터의 사본을 저장하는 한편 상기 구현 포인터를 상기 스터브 구현 객체로 설정하도록 지시하는 하나 이상의 인스트럭션을 더 포함하는
    시스템.
  17. 제 16 항에 있어서,
    상기 컴퓨팅 디바이스 상에서 실행되는 경우 상기 컴퓨팅 디바이스로 하여금 상기 인터페이스 클래스의 상기 동적 라이브러리 및 상기 실제 구현을 언로 딩(unload)하도록 지시하는 하나 이상의 인스트럭션을 더 포함하는
    시스템.
  18. 제 17 항에 있어서,
    상기 컴퓨팅 디바이스 상에서 실행되는 경우 상기 컴퓨팅 디바이스로 하여금 상기 구현 포인터를 상기 구현 포인터의 저장된 사본으로 설정하도록 지시하는 하나 이상의 인스트럭션을 더 포함하는
    시스템.
  19. 제 15 항에 있어서,
    상기 인터페이스 클래스는 강화된 싱글톤 인터페이스 클래스(enhanced singleton interface class)인
    시스템.
  20. 제 19 항에 있어서,
    상기 강화된 싱글톤 인터페이스 클래스는 추상 C++ 싱글톤 인터페이스 클래스(abstract C++ singleton interface class)인
    시스템.
KR1020090085967A 2009-04-03 2009-09-11 동적 라이브러리를 갖는 인터페이스를 단순화하는 방법, 시스템 및 컴퓨터 판독가능한 저장 매체 KR101392046B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/384,359 2009-04-03
US12/384,359 US8250589B2 (en) 2009-04-03 2009-04-03 Method for simplifying interfaces having dynamic libraries

Publications (2)

Publication Number Publication Date
KR20100110710A true KR20100110710A (ko) 2010-10-13
KR101392046B1 KR101392046B1 (ko) 2014-05-07

Family

ID=42035917

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090085967A KR101392046B1 (ko) 2009-04-03 2009-09-11 동적 라이브러리를 갖는 인터페이스를 단순화하는 방법, 시스템 및 컴퓨터 판독가능한 저장 매체

Country Status (6)

Country Link
US (1) US8250589B2 (ko)
EP (1) EP2237150A1 (ko)
JP (1) JP5425605B2 (ko)
KR (1) KR101392046B1 (ko)
CN (1) CN101853154A (ko)
TW (1) TWI501152B (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110271250A1 (en) * 2010-04-30 2011-11-03 Microsoft Corporation Software Development Tool
US20120089962A1 (en) * 2010-10-08 2012-04-12 International Business Machines Corporation Unchanged Object Management
CN103491111B (zh) * 2012-06-08 2016-12-14 阿里巴巴集团控股有限公司 无线应用发布、实现方法与装置
TWI624783B (zh) * 2015-09-17 2018-05-21 長茂科技股份有限公司 整合動態連結功能函式的行動裝置應用程式之建置系統及方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5297284A (en) * 1991-04-09 1994-03-22 Microsoft Corporation Method and system for implementing virtual functions and virtual base classes and setting a this pointer for an object-oriented programming language
US5805885A (en) * 1992-12-24 1998-09-08 Microsoft Corporation Method and system for aggregating objects
JP2002543516A (ja) * 1999-05-03 2002-12-17 サン・マイクロシステムズ・インコーポレイテッド プログラムオブジェクトを発見および結び付けるシステムおよび方法
TWI233034B (en) * 2000-09-26 2005-05-21 Advanced Control & Systems Inc Hierarchical software application system
US6996832B2 (en) * 2001-05-30 2006-02-07 Bea Systems, Inc. System and method for software component plug-in framework
GB2407656B (en) * 2003-10-28 2008-12-17 Symbian Ltd Mapping of dynamic link libraries in computing devices
US7882496B2 (en) * 2004-06-01 2011-02-01 International Business Machines Corporation Method and system for metering execution of interpreted programs
US20060080682A1 (en) * 2004-10-12 2006-04-13 Picsel Research Ltd. Run time dynamic linking
US7596536B2 (en) * 2005-12-01 2009-09-29 Exent Technologies, Ltd. System, method and computer program product for dynamically measuring properties of objects rendered and/or referenced by an application executing on a computing device
US8756616B2 (en) * 2006-12-29 2014-06-17 Core Wireless Licensing S.A.R.L. System and method for reducing the static footprint of mixed-language JAVA classes

Also Published As

Publication number Publication date
US20100257546A1 (en) 2010-10-07
TWI501152B (zh) 2015-09-21
EP2237150A1 (en) 2010-10-06
KR101392046B1 (ko) 2014-05-07
CN101853154A (zh) 2010-10-06
TW201037601A (en) 2010-10-16
JP5425605B2 (ja) 2014-02-26
US8250589B2 (en) 2012-08-21
JP2010244516A (ja) 2010-10-28

Similar Documents

Publication Publication Date Title
US10795660B1 (en) Live code updates
EP3134809B1 (en) Manual refinement of specialized classes
US9934005B2 (en) Dynamically building locale objects or subsections of locale objects based on historical data
US10089119B2 (en) API namespace virtualization
KR101581796B1 (ko) 컴퓨팅 플랫폼의 이종 프로세서들 간의 공유 가상 메모리에서의 가상 함수들의 공유
US9639329B2 (en) System and method for automatic invocation of constructor code for superclasses
US9910688B2 (en) Implementing aspects with callbacks in virtual machines
US6314445B1 (en) Native function calling
US9152442B2 (en) Callbacks in virtual machines
KR20100110710A (ko) 동적 라이브러리를 갖는 인터페이스를 간단히 하는 방법, 시스템 및 컴퓨터 프로그램 제품
CN111580798A (zh) 一种动态链接库实现方法、系统、计算机设备及存储介质
US7690007B2 (en) Mapping of dynamic link libraries in a computing device
US9110793B2 (en) Inner process
CA2875046A1 (en) Efficient compilation system and method for virtual function table creation
CN116010100A (zh) 区块链系统中的合约调用方法、装置、设备及存储介质
JP2006099297A (ja) 共有ライブラリ差分カストマイズ装置及びその方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee