doc ru
This commit is contained in:
@@ -26,6 +26,107 @@
|
||||
#endif
|
||||
|
||||
|
||||
//! \addtogroup System
|
||||
//! \{
|
||||
//! \class PILibrary pilibrary.h
|
||||
//!
|
||||
//! \~\brief
|
||||
//! \~english Run-time library
|
||||
//! \~russian Run-time библиотека
|
||||
//!
|
||||
//! \~\details
|
||||
//! \~english \section _sec0 Synopsis
|
||||
//! \~russian \section _sec0 Краткий обзор
|
||||
//! \~english
|
||||
//! %PILibrary allow you dynamically load external library and use
|
||||
//! some methods from it. %PILibrary instance contains library
|
||||
//! pointer and unload library on destructor, so recommended
|
||||
//! to use it with \b new creation.
|
||||
//!
|
||||
//! Main method of %PILibrary is \a resolve(const char *), which returns
|
||||
//! "void*" pointer to requested method. One should test it
|
||||
//! to \c nullptr and convert it in pointer to the required method.
|
||||
//!
|
||||
//! In case of C++ libraries it`s very important to use C-linkage
|
||||
//! of exported methods! You may also need to mark methods for
|
||||
//! export, e.g. \с __declspec(dllexport)
|
||||
//!
|
||||
//! \~russian
|
||||
//! %PILibrary позволяет динамически загружать стороннюю библиотеку
|
||||
//! и использовать оттуда методы. Экземпляр %PILibrary содержит
|
||||
//! указатель на библиотеку и выгружает её в деструкторе, поэтому
|
||||
//! рекомендуется создавать её с помощью \b new.
|
||||
//!
|
||||
//! Основной метод %PILibrary - это \a resolve(const char *), который возвращает
|
||||
//! "void*" указатель на запрошенный метод. Необходимо проверить его
|
||||
//! на \c nullptr и преобразовать в указатель на нужный метод.
|
||||
//!
|
||||
//! В случае C++ библиотеки очень важно использовать C-linkage
|
||||
//! для экспортируемых методов! Также может понадобиться пометить
|
||||
//! методы на экспорт, например, \с __declspec(dllexport)
|
||||
//!
|
||||
//! \~\code
|
||||
//! extern "C" {
|
||||
//! __declspec(dllexport) int exportedSum(int,int);
|
||||
//! __declspec(dllexport) int exportedMul(int,int);
|
||||
//! }
|
||||
//! \endcode
|
||||
//!
|
||||
//! \~english \section _sec1 Usage
|
||||
//! \~russian \section _sec1 Использование
|
||||
//!
|
||||
//! \~english Library:
|
||||
//! \~russian Библиотека:
|
||||
//! \~\code
|
||||
//! #include <piplugin.h>
|
||||
//!
|
||||
//! extern "C" {
|
||||
//! PIP_PLUGIN_EXPORT int exportedSum(int,int);
|
||||
//! PIP_PLUGIN_EXPORT int exportedMul(int,int);
|
||||
//! }
|
||||
//!
|
||||
//! int exportedSum(int a, int b) {
|
||||
//! return a + b;
|
||||
//! }
|
||||
//! int exportedMul(int a, int b) {
|
||||
//! return a * b;
|
||||
//! }
|
||||
//! \endcode
|
||||
//!
|
||||
//! \~english Program:
|
||||
//! \~russian Программа:
|
||||
//! \~\code
|
||||
//! int main(int argc, char * argv[]) {
|
||||
//! typedef int(*MyFunc)(int,int);
|
||||
//! PILibrary * lib = new PILibrary();
|
||||
//! if (lib->load("mylib.dll")) {
|
||||
//! MyFunc fadd = (MyFunc)lib->resolve("exportedSum");
|
||||
//! MyFunc fmul = (MyFunc)lib->resolve("exportedMul");
|
||||
//! if (fadd) {
|
||||
//! int sum = fadd(1, 2);
|
||||
//! piCout << "sum =" << sum;
|
||||
//! } else {
|
||||
//! piCout << "Can`t resolve" << "exportedSum";
|
||||
//! }
|
||||
//! if (fmul) {
|
||||
//! int mul = fadd(10, 20);
|
||||
//! piCout << "mul =" << mul;
|
||||
//! } else {
|
||||
//! piCout << "Can`t resolve" << "exportedMul";
|
||||
//! }
|
||||
//! } else {
|
||||
//! piCout << lib->lastError();
|
||||
//! }
|
||||
//! delete lib;
|
||||
//! }
|
||||
//!
|
||||
//! // sum = 3
|
||||
//! // mul = 30
|
||||
//! \endcode
|
||||
//!
|
||||
//! \}
|
||||
|
||||
|
||||
PRIVATE_DEFINITION_START(PILibrary)
|
||||
#ifdef WINDOWS
|
||||
HMODULE
|
||||
|
||||
Reference in New Issue
Block a user