(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-01-18
(54)【発明の名称】ソフトウェアプラットフォーム用第三者ライブラリ関数の解体呼び出し方法及び呼び出しシステム
(51)【国際特許分類】
G06F 8/61 20180101AFI20240111BHJP
【FI】
G06F8/61
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023540877
(86)(22)【出願日】2022-08-28
(85)【翻訳文提出日】2023-07-04
(86)【国際出願番号】 CN2022115342
(87)【国際公開番号】W WO2023051127
(87)【国際公開日】2023-04-06
(31)【優先権主張番号】202111147971.5
(32)【優先日】2021-09-29
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】522308967
【氏名又は名称】シャンハイ トサン テクノロジー リミテッド
【氏名又は名称原語表記】Shanghai TOSUN Technology Ltd.
【住所又は居所原語表記】Room904,No.4801 Caoan RD.,Jiading District, Shanghai,201804 P.R.China
(74)【代理人】
【識別番号】110001841
【氏名又は名称】弁理士法人ATEN
(72)【発明者】
【氏名】リィゥ チュ
(72)【発明者】
【氏名】シェ ユェイン
(72)【発明者】
【氏名】ムォ マン
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AA09
5B376AD17
5B376AD21
(57)【要約】
本発明はコンピュータ技術分野に属し、具体的にはソフトウェアプラットフォーム用第三者ライブラリ関数の解体呼び出し方法及び呼び出しシステムに関する。ソフトウェアプラットフォーム用第三者ライブラリ関数の解体呼び出し方法は、第三者ライブラリを構築することと、第三者ライブラリの合法性を検証することと、第三者ライブラリを呼び出すことにより、第三者ライブラリ関数の解体呼び出しシステムに対する自動導入解決手段を実現する。第三者ライブラリを追加するか、従来の第三者ライブラリ関数を変更するかに関わらず、ソフトウェアプラットフォームは第三者ライブラリをロードするだけで、関数インタフェースを自動的に識別することができ、ユーザーが呼び出しプログラムを手動で更新する必要がない。このような方法はソフトウェアプラットフォームアーキテクチャの安定性を保証することができ、及びソフトウェアプラットフォームの繰り返し修正による安定性低下等の問題を低減する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
第三者ライブラリを構築することと、
第三者ライブラリの合法性を検証することと、
第三者ライブラリを呼び出すことと、を含むこと、
を特徴とするソフトウェアプラットフォーム用第三者ライブラリ関数の解体呼び出し方法。
【請求項2】
前記第三者ライブラリを構築する方法は、
ソフトウェアプラットフォームによって前記第三者ライブラリを構築し、すなわち前記ソフトウェアプラットフォームによって前記第三者ライブラリにおける初期化サブモジュール、能力取得サブモジュール及び内部サブモジュールを構築し、且つ前記第三者ライブラリにおいて解放サブモジュールを構築することと、
前記解放サブモジュールは、前記第三者ライブラリがアンロードされる時にその申請したリソースを自動的に解放することに適することを、含むこと、
を特徴とする請求項1に記載のソフトウェアプラットフォーム用第三者ライブラリ関数の解体呼び出し方法。
【請求項3】
前記ソフトウェアプラットフォームにより前記初期化サブモジュールを構築する方法は、
前記ソフトウェアプラットフォーム内の前記ソフトウェアプラットフォームのヘッダファイル及びソフトウェアプラットフォームAPIリストによって前記初期化サブモジュールを生成し、前記初期化サブモジュールの呼び出しが完了した後、前記第三者ライブラリは前記ソフトウェアプラットフォームが提供するAPIリストにおける各APIのアドレス情報を取得することを、含むこと、
を特徴とする請求項2に記載のソフトウェアプラットフォーム用第三者ライブラリ関数の解体呼び出し方法。
【請求項4】
前記ソフトウェアプラットフォームにより前記能力取得サブモジュールを構築する方法は、
前記ソフトウェアプラットフォームは、前記ソフトウェアプラットフォームのバージョン番号をロードし、ユーザー論理コールバックサブモジュールのリストをロードして前記能力取得サブモジュールを生成しており、外部プログラムは前記能力取得サブモジュールを呼び出す時に、前記第三者ライブラリに対応する前記ソフトウェアプラットフォームのバージョン情報を取得し、前記ユーザー論理コールバックサブモジュールのリスト情報を取得し、この前記第三者ライブラリの全ての内部サブモジュール情報を取得することを、含むこと、
を特徴とする請求項3に記載のソフトウェアプラットフォーム用第三者ライブラリ関数の解体呼び出し方法。
【請求項5】
前記ソフトウェアプラットフォームにより前記内部サブモジュールを構築する方法は、
前記ソフトウェアプラットフォームの前記ユーザー機能論理サブモジュールに基づいて前記内部サブモジュールを生成すること、を含むこと、
を特徴とする請求項4に記載のソフトウェアプラットフォーム用第三者ライブラリ関数の解体呼び出し方法。
【請求項6】
前記第三者ライブラリの合法性を検証する方法は、
前記第三者ライブラリを前記ソフトウェアプラットフォームにロードし、前記ソフトウェアプラットフォームは前記第三者ライブラリの前記初期化サブモジュールを呼び出し、前記ソフトウェアプラットフォームは前記第三者ライブラリの前記能力取得サブモジュールを呼び出し、前記第三者ライブラリに対応する前記ソフトウェアプラットフォームのバージョン番号を取得し、前記ユーザーコールバックサブモジュールのリストを取得し、前記第三者ライブラリの全ての前記内部サブモジュールのアドレス情報及び関数パラメータ情報を取得し、
前記ソフトウェアプラットフォームは取得した前記第三者ライブラリに対応する前記ソフトウェアプラットフォームのバージョン番号を自身のバージョン番号と比較し、前記第三者ライブラリのバージョン番号が自身のバージョン番号より大きいと当該第三者ライブラリの呼び出しを停止し、そうでなければ前記第三者ライブラリを呼び出し続けること、を含むこと、
を特徴とする請求項5に記載のソフトウェアプラットフォーム用第三者ライブラリ関数の解体呼び出し方法。
【請求項7】
前記第三者ライブラリを呼び出す方法は、
前記ソフトウェアプラットフォームが前記第三者ライブラリを呼び出し続けた後、前記第三者ライブラリから取得した前記ユーザーコールバックサブモジュールのリスト及び前記内部サブモジュールのリストに基づいて前記第三者ライブラリを呼び出すことに適することと、
呼び出しが完了した後に、前記第三者ライブラリにおける前記解放サブモジュールを呼び出すことにより申請したリソースを解放することを、含むこと、
を特徴とする請求項6に記載のソフトウェアプラットフォーム用第三者ライブラリ関数の解体呼び出し方法。
【請求項8】
前記ソフトウェアプラットフォームのヘッダファイル、前記ソフトウェアプラットフォームAPIリスト、ソフトウェアプラットフォームバージョン番号、前記ユーザー論理コールバックサブモジュールのリスト、及び前記ユーザー機能論理サブモジュールを含むこと、
を特徴とする請求項1~7のいずれか一項に記載のソフトウェアプラットフォーム用第三者ライブラリ関数の解体呼び出し方法用のソフトウェアプラットフォーム。
【請求項9】
前記初期化サブモジュール、前記能力取得サブモジュール、前記内部サブモジュール及び前記解放サブモジュールを含むこと、
を特徴とする請求項1~7のいずれか一項に記載のソフトウェアプラットフォーム用第三者ライブラリ関数の解体呼び出し方法用の第三者ライブラリ。
【請求項10】
構築モジュールを含み、前記第三者ライブラリを構築し、
検証モジュールを含み、前記第三者ライブラリの合法性を検証し、
呼び出しモジュールを含み、前記第三者ライブラリを呼び出すこと、
を特徴とする請求項1~7のいずれか一項に記載のソフトウェアプラットフォーム用第三者ライブラリ関数の解体呼び出し方法を用いる呼び出しシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はコンピュータ技術分野に属し、具体的にはソフトウェアプラットフォーム用第三者ライブラリ関数の解体呼び出し方法及び呼び出しシステムに関する。
【背景技術】
【0002】
Windowsに基づくソフトウェアプラットフォームは第三者ライブラリを導入する方式によって機能拡張を行う。第三者ライブラリから導出されたインタフェース関数に対し、ソフトウェアプラットフォームはこれらのインタフェース関数の定義を知らなければならず、呼び出しプログラムを更新しないと、第三者ライブラリの関数呼び出しを実現することができない。
【0003】
追加された第三者ライブラリ、又は既存のアップグレードされた第三者ライブラリについて、インタフェース関数が変化するため、ソフトウェアプラットフォームの開発者は手動で呼び出しプログラムを更新しないと、対応する第三者ライブラリファイル関数の呼び出しを実現することができない。このような方式は、ソフトウェアプラットフォームは第三者ライブラリに基づいて呼び出しプログラムを更新し続けてソフトウェアプラットフォームと第三者ライブラリとの互換性を保持する必要があり、作業量が大きく且つ効率が低い。
【0004】
そのため、上記技術的問題に基づいて新たなソフトウェアプラットフォーム用第三者ライブラリ関数の解体呼び出し方法及び呼び出しシステムを設計する必要がある。
【発明の概要】
【0005】
本発明の目的は、ソフトウェアプラットフォーム用第三者ライブラリ関数の解体呼び出し方法及び呼び出しシステムを提供することである。
【0006】
上記技術的問題を解決するために、本発明はソフトウェアプラットフォーム用第三者ライブラリ関数の解体呼び出し方法を提供し、以下を含む:
第三者ライブラリを構築する、
第三者ライブラリの合法性を検証する、及び、
第三者ライブラリを呼び出す。
【0007】
さらに、上記第三者ライブラリを構築する方法は以下を含む:
ソフトウェアプラットフォームによって上記第三者ライブラリを構築し、すなわち上記ソフトウェアプラットフォームによって上記第三者ライブラリにおける初期化サブモジュール、能力取得サブモジュール及び内部サブモジュールを構築し、且つ上記第三者ライブラリにおいて解放サブモジュールを構築する。
上記解放サブモジュールは、上記第三者ライブラリがアンロードされる時にその申請したリソースを自動的に解放することに適する。
【0008】
さらに、上記ソフトウェアプラットフォームにより上記初期化サブモジュールを構築する方法は以下を含む:
上記ソフトウェアプラットフォーム内の上記ソフトウェアプラットフォームのヘッダファイル及びソフトウェアプラットフォームAPIリストによって上記初期化サブモジュールを生成し、上記初期化サブモジュールの呼び出しが完了した後、上記第三者ライブラリは上記ソフトウェアプラットフォームが提供するAPIリストにおける各APIのアドレス情報を取得する。
【0009】
さらに、上記ソフトウェアプラットフォームにより上記能力取得サブモジュールを構築する方法は以下を含む:
上記ソフトウェアプラットフォームは、上記ソフトウェアプラットフォームのバージョン番号をロードし、ユーザー論理コールバックサブモジュールのリストをロードして上記能力取得サブモジュールを生成する。外部プログラムは上記能力取得サブモジュールを呼び出す時に、上記第三者ライブラリに対応する上記ソフトウェアプラットフォームのバージョン情報を取得し、上記ユーザー論理コールバックサブモジュールのリスト情報を取得し、この上記第三者ライブラリの全ての内部サブモジュール情報を取得する。
【0010】
さらに、上記ソフトウェアプラットフォームにより上記内部サブモジュールを構築する方法は以下を含む:
上記ソフトウェアプラットフォームの上記ユーザー機能論理サブモジュールに基づいて上記内部サブモジュールを生成する。
【0011】
さらに、上記第三者ライブラリの合法性を検証する方法は以下を含む:
上記第三者ライブラリを上記ソフトウェアプラットフォームにロードする。上記ソフトウェアプラットフォームは上記第三者ライブラリの上記初期化サブモジュールを呼び出す。上記ソフトウェアプラットフォームは上記第三者ライブラリの上記能力取得サブモジュールを呼び出し、上記第三者ライブラリに対応する上記ソフトウェアプラットフォームのバージョン番号を取得し、上記ユーザーコールバックサブモジュールのリストを取得し、上記第三者ライブラリの全ての上記内部サブモジュールのアドレス情報及び関数パラメータ情報を取得する。
上記ソフトウェアプラットフォームは取得した上記第三者ライブラリに対応する上記ソフトウェアプラットフォームのバージョン番号を自身のバージョン番号と比較し、上記第三者ライブラリのバージョン番号が自身のバージョン番号より大きいと当該第三者ライブラリの呼び出しを停止し、そうでなければ上記第三者ライブラリを呼び出し続ける。
【0012】
さらに、上記第三者ライブラリの呼び出し方法は以下を含む:
上記ソフトウェアプラットフォームは上記第三者ライブラリを呼び出し続けた後、上記ソフトウェアプラットフォームは、上記第三者ライブラリから取得した上記ユーザーコールバックサブモジュールのリスト及び上記内部サブモジュールのリストに基づいて上記第三者ライブラリを呼び出すことに適する。呼び出しが完了した後に、上記第三者ライブラリにおける上記解放サブモジュールを呼び出すことにより申請したリソースを解放する。
【0013】
第二態様では、本発明はさらに、上記ソフトウェアプラットフォーム用第三者ライブラリ関数の解体呼び出し方法用のソフトウェアプラットフォームを提供し、以下を含む:
上記ソフトウェアプラットフォームのヘッダファイル、上記ソフトウェアプラットフォームAPIリスト、ソフトウェアプラットフォームバージョン番号、上記ユーザー論理コールバックサブモジュールのリスト、上記ユーザー機能論理サブモジュール及びC++コンパイラである。
【0014】
第三態様では、本発明はさらに上記ソフトウェアプラットフォーム用第三者ライブラリ関数の解体呼び出し方法用の第三者ライブラリを提供し、以下を含む:
上記初期化サブモジュール、上記能力取得サブモジュール、上記内部サブモジュール及び上記解放サブモジュールである。
【0015】
第四態様では、本発明はさらに上記ソフトウェアプラットフォーム用第三者ライブラリ関数の解体呼び出し方法を用いる呼び出しシステムを提供し、以下を含む:
構築モジュールであって、上記第三者ライブラリを構築する、
検証モジュールであって、上記第三者ライブラリの合法性を検証する、及び、
呼び出しモジュール、上記第三者ライブラリを呼び出す。
【0016】
本発明の効果は以下の通りである。本発明は、第三者ライブラリを構築すること、第三者ライブラリの合法性を検証すること、及び第三者ライブラリを呼び出すことにより、第三者ライブラリ関数の解体呼び出しシステムに対する自動導入解決手段を実現する。第三者ライブラリを追加するか、従来の第三者ライブラリ関数を変更するかに関わらず、ソフトウェアプラットフォームは第三者ライブラリをロードするだけで、関数インタフェースを自動的に識別することができ、ユーザーが呼び出しプログラムを手動で更新する必要がない。このような方法はソフトウェアプラットフォームアーキテクチャの安定性を保証することができ、及びソフトウェアプラットフォームの繰り返し修正による安定性低下等の問題を低減する。
【0017】
本発明の他の特徴及び利点は以下の明細書に記載され、且つ、一部は明細書から明らかになり、又は本発明を実施することによって理解される。本発明の目的及び他の利点は明細書及び図面に特に指摘された構造によって実現及び取得される。
本発明の上記目的、特徴及び利点をより分かりやすくするために、以下は好適な実施例を挙げ、且つ添付図面と合わせ、詳細に説明する。
【図面の簡単な説明】
【0018】
本発明の具体的な実施形態又は従来技術における技術的解決手段をより明確に説明するために、以下は具体的な実施形態又は従来技術の説明に用いる必要がある図面を簡単に紹介する。明らかに、以下の説明における図面は本発明のいくつかの実施形態であり、当業者にとって、創造的な労力を要することなく、これらの図面に基づいて他の図面を得ることができる。
【0019】
【
図1】
図1は、本発明に係るソフトウェアプラットフォーム用第三者ライブラリ関数の解体呼び出し方法のフローチャートである。
【
図2】
図2は、本発明に係る第三者ライブラリを構築するフローチャートである。
【
図3】
図3は、本発明に係る第三者ライブラリを呼び出すフローチャートである。
【
図4】
図4は、本発明に係る呼び出しシステムの原理ブロック図である。
【発明を実施するための形態】
【0020】
本発明の実施例の目的、技術的解決手段及び利点をより明確にするために、以下は図面を参照して本発明の技術的解決手段を明瞭、完全に説明する。明らかに、記載された実施例は本発明の一部の実施例であり、全ての実施例ではない。本発明における実施例に基づき、当業者は創造的な労働をしない前提で得られた全ての他の実施例は、いずれも本発明の保護範囲に属する。
【0021】
実施例1
図1は、本発明に係るソフトウェアプラットフォーム用第三者ライブラリ関数の解体呼び出し方法のフローチャートである。
【0022】
図1に示すように、本実施例1はソフトウェアプラットフォーム用第三者ライブラリ関数の解体呼び出し方法を提供する。第三者ライブラリを構築することと、第三者ライブラリの合法性を検証することと、第三者ライブラリを呼び出すことを含む。第三者ライブラリ関数の解体呼び出しシステムに対する自動導入解決手段を実現する。第三者ライブラリを追加するか、従来の第三者ライブラリ関数を変更するかに関わらず、ソフトウェアプラットフォームは第三者ライブラリをロードするだけで、関数インタフェースを自動的に識別することができ、ユーザーが呼び出しプログラムを手動で更新する必要がない。このような方法はソフトウェアプラットフォームアーキテクチャの安定性を保証することができ、且つソフトウェアプラットフォームの繰り返し修正による安定性低下等の問題を低減する。
【0023】
図2は、本発明に係る第三者ライブラリを構築するフローチャートである。
図2に示すように、本実施例において、上記第三者ライブラリを構築する方法は以下のとおりである:ソフトウェアプラットフォームによりC++コンパイラを呼び出して第三者ライブラリを構築する。すなわちソフトウェアプラットフォームによって第三者ライブラリにおける初期化サブモジュール(初期化関数および対応する機能を含む)、能力取得サブモジュール(能力取得関数および対応する機能を含む)及び内部サブモジュール(内部関数及び対応する機能を含む)を構築し、且つ第三者ライブラリにおいて解放サブモジュール(解放関数及び対応する機能を含む)を構築する。上記解放サブモジュールは、第三者ライブラリがアンロードされる時にその申請したリソースを自動的に解放することに適する。初期化サブモジュール、能力取得サブモジュール及び解放サブモジュールは、開示されたサブモジュールであり、外部プログラムによってサブモジュールにおける関数を自動的にロードして呼び出すことができる。内部サブモジュールにおける関数は外部から見えない。
【0024】
本実施例において、上記ソフトウェアプラットフォームにより初期化サブモジュールを構築する方法は以下を含む:ソフトウェアプラットフォーム内のソフトウェアプラットフォームのヘッダファイル及びソフトウェアプラットフォームAPIリストによって初期化サブモジュールを自動生成し、且つ初期化サブモジュールの呼び出しが完了した後、第三者ライブラリはソフトウェアプラットフォームが提供するAPIリストにおける各APIのアドレス情報を取得する。これにより、正常な機能を発揮することができる。
【0025】
本実施例において、上記ソフトウェアプラットフォームにより能力取得サブモジュールを構築する方法は以下を含む:ソフトウェアプラットフォームは、ソフトウェアプラットフォームのバージョン番号をロードし、ユーザー論理コールバックサブモジュールのリスト(ユーザー論理コールバックサブモジュールのリストはすなわちソフトウェアプラットフォーム内でユーザーによって開発されたユーザー論理コールバック関数リストである)をロードして自動的に能力取得サブモジュールを生成する。外部プログラムは能力取得サブモジュールを呼び出す時に、第三者ライブラリに対応するソフトウェアプラットフォームのバージョン情報を取得し、ユーザー論理コールバックサブモジュールのリスト情報を取得し、且つこの第三者ライブラリの全ての内部サブモジュール情報を取得する。
【0026】
本実施例において、上記ソフトウェアプラットフォームにより内部サブモジュールを構築する方法は以下を含む:ソフトウェアプラットフォームのユーザー機能論理サブモジュール(ユーザー機能論理プログラム)に基づいて内部サブモジュールを生成し、内部サブモジュールは外部にインタフェースを開放せず、外部プログラムが能力取得関数を呼び出すだけで取得することができる。
【0027】
図3は、本発明に係る第三者ライブラリを呼び出すフローチャートである。
図3に示すとおり、本実施例において、上記第三者ライブラリの合法性を検証する方法は以下を含む:第三者ライブラリの呼び出しプロセスはソフトウェアプラットフォームと第三者ライブラリが連携して完了する。ソフトウェアプラットフォームにおいて動的リンクライブラリをロードすることにより、第三者ライブラリをソフトウェアプラットフォームにロードする。ソフトウェアプラットフォームは第三者ライブラリの初期化サブモジュール(初期化関数を呼び出す)を呼び出し、ソフトウェアプラットフォームは第三者ライブラリの能力取得サブモジュール(能力取得関数を呼び出す)を呼び出し、第三者ライブラリに対応するソフトウェアプラットフォームのバージョン番号を取得し、ユーザーコールバックサブモジュールのリスト(ユーザーコールバック関数リスト)を取得し、第三者ライブラリの全ての内部サブモジュール(内部関数は、例えば、内部関数a1、内部関数a2、…、内部関数anを含む)のアドレス情報及び関数パラメータ情報を取得する。ソフトウェアプラットフォームは取得した第三者ライブラリに対応するソフトウェアプラットフォームのバージョン番号を自身のバージョン番号と比較し、第三者ライブラリのバージョン番号が自身のバージョン番号より大きい場合、この第三者ライブラリは自分のバージョンより新しいソフトウェアプラットフォームによりコンパイルされると説明し、そして当該第三者ライブラリの呼び出しを停止し、そうでなければ当該第三者ライブラリの合法性(要求に合致する)を判断して第三者ライブラリを呼び出し続ける。ソフトウェアプラットフォームは第三者ライブラリを呼び出す時、まず能力取得関数を呼び出す方法を採用する。第三者ライブラリがいかなる内部関数も導出しない場合、第三者ライブラリ内の全ての呼び出し可能な関数リソースを知ることができる。且つソフトウェアプラットフォームは第三者ライブラリの関数リソースを取得した後、その内部の関数パラメータを自動的に識別することができ、関数呼び出しインタフェースを自動的に生成することができ、ソフトウェアプラットフォーム及び第三者ライブラリの開発効率を向上させ、エラーの可能性を低減させる。第三者プログラムがソフトウェアプラットフォームにより生成されると、同じバージョン又はより高いバージョンのソフトウェアプラットフォームにより呼び出されることができる。呼び出す過程においてソフトウェアプラットフォームは第三者ライブラリの関数パラメータタイプを自動的に取得し、ユーザーはソフトウェアプラットフォームを更新する必要がなく、第三者ライブラリを自由に呼び出すことができる。この方法は呼び出しシステムの開発及びアップグレード効率を向上させる。
【0028】
本実施例において、上記第三者ライブラリの呼び出し方法は以下を含む:ソフトウェアプラットフォームは第三者ライブラリを呼び出し続けた後、ソフトウェアプラットフォームは、第三者ライブラリから取得したユーザーコールバックサブモジュールのリスト(ユーザーコールバック関数リスト)及び内部サブモジュールのリスト(内部関数リスト)に基づいて第三者ライブラリを呼び出すことに適する。呼び出しが完了し又は続けて第三者ライブラリを呼び出す必要がない時、第三者ライブラリにおける解放サブモジュール(解放関数)を呼び出すことにより申請したリソースを解放する。
【0029】
本実施例において、ソフトウェアプラットフォームは、ソフトウェアプラットフォームのヘッダファイル、APIシンボル情報を含むソフトウェアプラットフォームAPIリスト、ソフトウェアプラットフォームのバージョン番号、ユーザーはソフトウェアプラットフォームによって生成したユーザー論理(コールバック関数の方式で表現する)、ユーザーはソフトウェアプラットフォームによって設計した独自論理(通常関数で表現する)を含む。ソフトウェアプラットフォームは第三者ライブラリを構築する過程において、まず初期化関数を生成する必要があり、当該関数のソースコードはソフトウェアプラットフォームのヘッダファイル及びAPIシンボル情報を含むソフトウェアプラットフォームAPIリストに基づいて生成される。次に能力取得関数を生成する必要があり、当該関数のソースコードはソフトウェアプラットフォーム自体のバージョン番号、ユーザー論理コールバック関数のシンボル情報で構成される。また解放関数を生成する必要があり、第三者ライブラリのアンロード前に申請されたリソースを解放することを担当する。最後に一連の内部関数を生成する必要があり、これらの内部関数はユーザーがソフトウェアプラットフォームによって設計した独自論理である。必要な関数が生成された後、ソフトウェアプラットフォームはC/C++コンパイラを呼び出し、生成された関数を第三者ライブラリの実行可能なファイルにコンパイルする。
【0030】
本実施例において、ソフトウェアプラットフォームはさらに、動的リンクライブラリのロード機能、関数呼び出し機能、及びバージョン番号の比較機能と実行機能と停止機能を含む。ソフトウェアプラットフォームは第三者ライブラリを呼び出す過程において、まず動的リンクライブラリのロード機能によって第三者ライブラリをロードする必要がある。ロードが成功した後、関数呼び出し機能によって第三者ライブラリの初期化関数を呼び出す。続いて関数呼び出し機能によって第三者ライブラリの能力取得関数を呼び出し、本実施例において当該能力取得関数にコンパイルされたソフトウェアプラットフォームのバージョン番号、及びユーザー論理コールバック関数を読み出し、且つソフトウェアプラットフォームに入力する。ソフトウェアプラットフォームは当該第三者ライブラリの構築バージョン番号と本ソフトウェアプラットフォームのバージョン番号との関係を知り、バージョン番号が同じであるか又は本ソフトウェアプラットフォームのバージョン番号が第三者ライブラリの構築バージョン番号より大きい場合、本ソフトウェアプラットフォームは続けて第三者ライブラリを呼び出すことができ、そうでなければ呼び出しプロセスを終了する。バージョン番号比較機能の実行が完了して継続的に呼び出し可能なフラグを返した後、ソフトウェアプラットフォームは実行プログラム機能を実行し、実行中に、第三者ライブラリの内部関数はソフトウェアプラットフォームに自由に呼び出され、ソフトウェアプラットフォームに各種の機能を提供する。第三者ライブラリを使用する必要がない場合、ソフトウェアプラットフォームはプログラム停止機能を実行し、当該機能は第三者ライブラリの解放関数を呼び出し、第三者ライブラリが申請したリソースを解放した後、呼び出しプロセスが終了する。
【0031】
具体的には、本実施例において、CRCチェックアルゴリズムを提供する第三者ライブラリを例とする。その内部にCRC16アルゴリズムを有し、ソフトウェアプラットフォームが当該ライブラリをロードした後、ユーザーにCRC16アルゴリズムのインタフェース関数を提供することができ、ユーザーが自由に呼び出し、CRC16のチェック値を計算する。従来のソフトウェアプラットフォーム及び既存のソフトウェアプラットフォームはいずれもこの方式をサポートしてユーザーに利用可能な機能を提供する。このCRCチェックアルゴリズムの第三者ライブラリに新たな機能が追加される場合、例えば:(1)このCRC16チェックアルゴリズムのパラメータを3つから4つに修正する場合、(2)新たなCRC32アルゴリズムが追加される場合、従来のソフトウェアプラットフォームは第三者ライブラリが変化する場合、開発者が手動で修正する必要がある項目は以下のとおりである。ソフトウェアプラットフォームに定義されたCRC16チェックアルゴリズムのパラメータを調整し、4つのパラメータの新しいパラメータ形式をサポートし、新しいCRC32アルゴリズムのインタフェース定義を追加し、ソフトウェアプラットフォームの関連モジュールを再コンパイルし、修正内容を有効にする。
【0032】
ユーザーは常にソフトウェアプラットフォームが更新された後、更新されたソフトウェアプラットフォームを用いて新たなCRCチェックアルゴリズムの第三者関数ライブラリをロードしないとこの変化を知ることができず、且つ自分のスクリプトを同期修正し、関数のアップグレードをサポートし、それにより最終的にユーザーの所望の機能を実現する。この過程はその中にソフトウェアプラットフォームのアップグレードが挿入されるため、時間のオーバーヘッド、開発オーバーヘッド、ソフトウェアプラットフォームの更新及び再配置等の多くの制御できない要素をもたらし、そのため従来のソフトウェアプラットフォームを使用すると第三者関数ライブラリの更新が頻繁で、効率が低いという問題に遭遇する。実施例の提供するソフトウェアプラットフォームはソフトウェアプラットフォーム自体の再アップグレード過程を経る必要がなく、その具体的な方法は以下のとおりである:更新されたCRCチェックの第三者ライブラリを直接ロードし、能力取得関数により、更新されたCRC16アルゴリズムの関数パラメータ定義、及び新たに追加されたCRC32アルゴリズムの関数定義を含む、当該ライブラリの全てのAPI関数定義を得る。端末ユーザーに更新されたCRCチェックの第三者ライブラリの最新定義を提供し、ユーザーは最新定義に基づいて自分のプログラムを修正する。ソフトウェアプラットフォームはユーザーがCRC16及びCRC32関数を呼び出す時、正確なアドレス及びシンボル情報を与えて呼び出しプロセスの円滑を保証する。それにより新版第三者ライブラリに基づいて所望の機能を実現する。
【0033】
実施例2
実施例1に加えて、本実施例2はさらに実施例1におけるソフトウェアプラットフォーム用第三者ライブラリ関数の解体呼び出し方法用のソフトウェアプラットフォームを提供し、ソフトウェアプラットフォームのヘッダファイル、ソフトウェアプラットフォームAPIリスト、ソフトウェアプラットフォームバージョン番号、ユーザー論理コールバックサブモジュールのリスト、ユーザー機能論理サブモジュール及びC++コンパイラを含む。
【0034】
本実施例において、ソフトウェアプラットフォームが含む各サブモジュール及び機能は実施例1において既に詳細に説明し、本実施例において説明を省略する。
【0035】
実施例3
実施例1に加えて、本実施例3はさらに実施例1におけるソフトウェアプラットフォーム用第三者ライブラリ関数の解体呼び出し方法用第三者ライブラリを提供し、初期化サブモジュール、能力取得サブモジュール、内部サブモジュール及び解放サブモジュールを含む。
本実施例において、第三者ライブラリに含まれる各サブモジュール及び機能は実施例1において詳細に説明され、本実施例において説明を省略する。
【0036】
実施例4
図4は、本発明に係る呼び出しシステムの原理ブロック図である。
図4に示すように、実施例1に加えて、本実施例4はさらに実施例1におけるソフトウェアプラットフォーム用第三者ライブラリ関数の解体呼び出し方法を用いる呼び出しシステムを提供し、以下を含む:構築モジュールであって、第三者ライブラリを構築する。検証モジュールであって、第三者ライブラリの合法性を検証する。呼び出しモジュールであって、第三者ライブラリを呼び出す。
本実施例において、各モジュールの具体的な機能は実施例1において既に詳細に説明し、本実施例において説明を省略する。
【0037】
実施例5
上記実施例に加えて、本実施例5はさらに呼び出し装置を提供し、ソフトウェアプラットフォーム及び第三者ライブラリを含む。上記ソフトウェアプラットフォームは第三者ライブラリを構築し、且つ第三者ライブラリを呼び出すことに適する。
本実施例において、上記ソフトウェアプラットフォーム及び第三者ライブラリの機能は上記実施例において詳細に説明され、本実施例において説明を省略する。
【0038】
以上をまとめると、本発明は、第三者ライブラリを構築すること、及び第三者ライブラリを呼び出すことにより、第三者ライブラリ関数の解体呼び出しシステムに対する自動導入解決手段を実現する。第三者ライブラリを追加するか、従来の第三者ライブラリ関数を変更するかに関わらず、ソフトウェアプラットフォームは第三者ライブラリをロードするだけで、関数インタフェースを自動的に識別することができ、ユーザーが呼び出しプログラムを手動で更新する必要がない。このような方法はソフトウェアプラットフォームアーキテクチャの安定性を保証することができ、且つソフトウェアプラットフォームの繰り返し修正による安定性低下等の問題を低減する。
【0039】
本願の提供するいくつかの実施例において、当然のことながら、開示された装置及び方法は、他の方式によって実現することもできる。上記で説明した装置の実施例は単なる例示であり、例えば、図面におけるフローチャート及びブロック図は本発明の複数の実施例による装置、方法及びコンピュータプログラム製品の実現可能なアーキテクチャ、機能及び操作を示す。この点に関して、フローチャート又はブロック図における各ブロックは、所定の論理機能を実行するための一つ以上の実行可能命令を含むモジュール、プログラムセグメント、又はコードの一部を表すことができる。なお、いくつかの代替的な実現方式において、ブロックに表記された機能は図面に表記された順序と異なる順序で発生してもよい。例えば、二つの連続するブロックは、実際には実質的に並行して実行することができ、関連する機能に応じて、時には逆の順序で実行することもできる。また、ブロック図及び/又はフローチャートの各ブロック、並びにブロック図及び/又はフローチャートのブロックの組み合わせは、所定の機能又は動作を実行する専用のハードウェアベースのシステムで実現されてもよく、又は専用のハードウェアとコンピュータ命令との組み合わせで実現されてもよいことに留意されたい。
【0040】
また、本発明の各実施例における各機能モジュールは一体に集積して一つの独立した部分を形成してもよく、各モジュールが単独で存在してもよく、二つ又は二つ以上のモジュールを集積して一つの独立した部分を形成してもよい。
【0041】
上記機能はソフトウェア機能モジュールの形式で実現し且つ独立した製品として販売又は使用する場合、一つのコンピュータの読み取り可能な記憶媒体に記憶することができる。このような理解に基づき、本発明の技術的解決手段は本質的に又は従来技術に寄与する部分又は当該技術的解決手段の部分はソフトウェア製品の形式で表すことができる。当該コンピュータソフトウェア製品は一つの記憶媒体に記憶され、複数のコマンドを含んで一つのコンピュータ装置(パーソナルコンピュータ、サーバ、又はネットワーク装置等であってもよい)に本発明の各実施例に記載の方法の全部又は一部のステップを実行させる。前述の記憶媒体は以下を含む:Uディスク、リムーバブルディスク、リードオンリーメモリ(ROM,Read-Only Memory)、ランダムアクセスメモリ(RAM,Random Access Memory)、磁気ディスク又は光ディスク等の各種のプログラムコードを記憶できる媒体。
【0042】
上述した本発明による好ましい実施例を啓発して、上述した説明内容から、当業者は本発明の技術的思想を逸脱しない範囲内で多様な変更及び修正を行うことができる。本発明の技術的範囲は明細書の内容に限定されず、特許請求の範囲に基づいてその技術的範囲を確定しなければならない。
【国際調査報告】