跨平台輸入設備程式庫,包含鍵盤 滑鼠 搖桿 觸控 ,支援 cmake 編譯
到 Releases · wgois/OIS · GitHub 抓取,我取得時是 1.5 版
看一下 demos\OISConsoleDemo 子目錄中的範例大概就知道的怎麼用,以下摘錄範例的 Win 平台做簡要說明
跨平台輸入設備程式庫,包含鍵盤 滑鼠 搖桿 觸控 ,支援 cmake 編譯
到 Releases · wgois/OIS · GitHub 抓取,我取得時是 1.5 版
看一下 demos\OISConsoleDemo 子目錄中的範例大概就知道的怎麼用,以下摘錄範例的 Win 平台做簡要說明
Global 物件指的是如下的用法:
class Global_t
{
UTF8_String Hello{"Hello..."};
public:
// Destructor
~Global_t()
{
cout << "Global_t::~Global_t()" << endl;
}
UTF8_String cxxlFASTCALL GetHello() const
{
return Hello;
}
}g_Global;
特性有三:
這裡的插件是指 CxxlMan2 程式庫的 cxxlObjectPlugin 插件,cxxlObjectPlugin 插件有一個特性,當某個 DLL 檔所提供的所有 cxxlObjectPlugin 物件已無使用者時,這個 DLL 檔就會被卸載。
但 DLL 檔提供的物件若是一般的 Singleton 模式物件,那麼永遠都會有一個不能放棄的持有記錄,即使已無持有者了,這個 DLL 檔也永遠卸不掉。這時可藉由 LifeCustody 這個工具的幫忙,就可以解決這問題。
因要設計成 DLL 和 使用端 兩部份,所以直接提供範例原始檔:
SingletonExample.zip
要編譯這範例須先如下的東東:
#include <iostream> using namespace std; class A { int m_v; public: // Constructor A(int v) { m_v = v; } void Show() { cout << "數值:" << m_v << endl; } }; class B { public: // Constructor B() {} void Show(int v) { static A a(v); // 函數中的靜態變數 a.Show(); } }; int main() { B b1; B b2; b1.Show(1); // 第一次執行會設定靜態變數,往後用的都是同一個 b1.Show(11); b2.Show(2); b2.Show(22); return 0; }