13,000
回編集
234行目: | 234行目: | ||
return a.exec(); | return a.exec(); | ||
} | |||
</syntaxhighlight> | |||
<br><br> | |||
== ライブラリとバイナリ互換性 === | |||
==== バイナリ互換性とは ==== | |||
大規模なソフトウェアの場合、複数の機能を再利用したり、プラグイン等を開発するためにライブラリを使用することが多い。<br> | |||
静的ライブラリまたは動的ライブラリをリンクしてソフトウェアから機能を利用する。<br> | |||
<br> | |||
しかし、ライブラリを開発する上で、機能の追加または削除した場合、バイナリ互換性の問題が発生することがある。<br> | |||
<br> | |||
バイナリ互換性とは、ライブラリとそれをリンクしたソフトウェアの間に互換性があるかということである。<br> | |||
例えば、以下のようなライブラリを開発したとする。<br> | |||
<syntaxhighlight lang="c++"> | |||
// Plugin.h | |||
class Plugin | |||
{ | |||
public: | |||
Plugin(){} | |||
~Plugin(){} | |||
private: | |||
int version; | |||
}; | |||
</syntaxhighlight> | |||
<br> | |||
以下に、上記のライブラリをリンクするソフトウェアを記述する。<br> | |||
<syntaxhighlight lang="c++"> | |||
// main.h | |||
#include <iostream> | |||
// Pluginクラスを継承 | |||
class MyPlugin : public Plugin | |||
{ | |||
public: | |||
MyPlugin() : version(0) | |||
{ | |||
} | |||
~MyPlugin() | |||
{ | |||
} | |||
void printVersion() | |||
{ | |||
std::cout << "MyPlugin version : " << version << std::endl; | |||
} | |||
private: | |||
int myVersion; | |||
}; | |||
</syntaxhighlight> | |||
<br> | |||
<syntaxhighlight lang="c++"> | |||
// main.cpp | |||
#include <iostream> | |||
int main() | |||
{ | |||
MyPlugin plugin; | |||
plugin.printVersion(); | |||
return 0; | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> |