花了週末兩天時間,將opencc移植成WIN10-UWP可用的庫,並完成自己的繁簡轉換工具。

我的繁簡轉換工具下載地址為:https://www.microsoft.com/store/apps/9nblggh68g62

移植後的代碼下載地址:http://yunpan.cn/cFiYYCxwTLdfX  访问密码 0533

因為今天(2015-11-1 20:18)才上傳,所以如果你在今天或接下來的兩到三天,是找不到這款軟件的,因為微軟商店在審核。。

來個GIF圖來瞅瞅:

台灣的“軟體”可以轉換成大陸的“软件”哦。

1.移植

1)創建一個VC++,DLL通用工程

2)for(auto x : xs) 要全部換成 for each (auto x in xs)

3)要關閉安全檢測,這個是為了使strcpy等函數編譯通過。

4)所有opencc的cpp文件,要禁用預編譯頭。

5)在Config.cpp中,要將 #include <unordered_map> 放到最上面,不然編譯不過。具體原因待查。

搞完這幾步,一個DLL就創建成功了。

2.創建RuntineComponent

我不知道C#工程能否直接調用DLL,沒有試驗過。不過即便能調用,相信也是相當麻煩的,需要處理一大堆類型轉換的問題。

所以,我們有必要創建一個通用工程,所有語言都可以調用的模塊,這個模塊就是RuntineComponent了。

具體可以參考博客:http://www.cnblogs.com/webabcd/p/3422563.html

還有C++/CX的一些參考,也是需要你去了解的:https://msdn.microsoft.com/en-us/library/windows/apps/hh699871.aspx

我的例子,名為OpenCCx,後面加一個x,表示我這個是亂搞的,並不是原作者搞出來的。

3.使用RuntineComponent

創建一個C#的UWP工程,添加OpenCCxRuntineComponent工程到你的解決方案。

在UWP工程中,添加引用,選擇工程,點擊“確定”即可。

然後,在你的工程裡面就可以使用 OpenCCxRuntineComponent名字空間。

例子是非常簡單的:

OpenCCxRuntineComponent.OpenCCx opencc_s2t = new OpenCCxRuntineComponent.OpenCCx(); --- 創建

opencc_s2t.Load(OpenCCxRuntineComponent.ConverterType.Simple2Traditional);  ----使用什麼轉換規則
        private void btn2Simple_Click(object sender, RoutedEventArgs e)
{
string ret = opencc_t2s.Convert(textBox.Text); ---使用簡單的Convert就OK了。
if (ret != null)
{
textBox.Text = ret;
}
}

你可以使用一個OpenCCx變量,用哪個就Load哪個。

我的代碼中,對已加載的東東進行了保存,不會重複加載的。

也可以使用多個OpenCCx變量,一個變量代表一種轉換,看個人需要了。

[PS]

終於可以使用自己的繁簡轉換工具了^_^,感謝opencc作者。

帖上opencc代碼地址:https://github.com/BYVoid/OpenCC

在線opencc轉換地址:opencc.byvoid.com

[END]

【WIN10】移植opencc到WIN10-UWP,實現自己的繁簡轉換工具的更多相关文章

  1. Jquery scrollTop animate 實現動態滾動到頁面頂部

    這個方法之前都是用的錨點實現的,但是效果僵硬,動感不足! 之後參考了一些網站,發現都是用的js,於是自己想到用jquery 來做一個插件也來實現以下這個小功能. $.fn.backTop = func ...

  2. linux下c++實現簡單的生產者消費者隊列模式

    引言 生產者消費者是一個經典的模式 利用生產者,消費者和緩衝區降低了生產者和消費者之間的的耦合度 便於對生產者和消費者的修改 下面記錄的是一個經典的單一生產者多消費者的模式 設計思路 以隊列做為緩衝區 ...

  3. ASP.NET MVC 4.0 学习2-留言板實現

    新增專案實現留言板功能,瞭解MVC的運行機制 1,新增專案   2,添加數據庫文件message.mdf   Ctrl+W,L 打開資料庫連接,添加存放留言的Atricle表 添加字段,後點擊&quo ...

  4. 在Android中afinal框架下實現sqlite數據庫版本升級的辦法

    public abstract void onUpgrade(SQLiteDatabase db,int oldVersion,int new Version) 這個方法在實現時需要重寫.   pub ...

  5. [實現DDD] 第10章 聚合(1)設計原則

    聚合只是將一些實體(Entity)與值對象(Value Object)聚集起來的對象樹嗎?? 有些途徑可能使我們設計出不正確的聚合模型, 如:可能為了對象組合上的方便而將聚合設計的很大;也可能設計的聚 ...

  6. 開玩樹莓派(二):配置IP,實現無顯示器局域網內Putty連接和RDP遠程

    目錄: 開玩樹莓派(一):安裝Raspbian系統 開玩樹莓派(二):配置IP,實現無顯示器局域網內Putty連接和RDP遠程 開玩樹莓派(三):Python編程 開玩樹莓派(四):GPIO控制和遠程 ...

  7. C# 實現文件壓縮-- 背景:服務器Log.txt 過多,佔用過多硬盤空間,壓縮備份后節省空間資源

    1.壓縮實現代碼如下: 調用ICSharpCode.SharpZipLib.dll(free software,可以搜到源碼). 轉移指定目錄文件夾轉移到目標文件夾 壓縮目標文件夾 刪除目標文件夾 u ...

  8. css 實現微信聊天類似的氣泡

    要實現這樣的效果 代碼如下: --------------------------------------- <style> .test{width:300px; padding:30px ...

  9. win10下通过编译源码方式在chrome中成功安装react-devtools开发工具插件

    win10下通过编译源码方式在chrome中成功安装react-devtools开发工具插件   1.去git上下载react-devtools文件到本地,https://github.com/fac ...

随机推荐

  1. 初识python面向对象编程

    初识python面向对象编程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.面向过程的程序设计思想 #!/usr/bin/env python #_*_coding:utf-8 ...

  2. 查找和替换img src

    $("#imgId")[0].src; //获取 $("#imgId").attr('src',path); //修改

  3. python---补充locals()变量在变量分发中的使用

    在Django,tornado等框架中,变量分发渲染模板是一件再平常不过的事,但是当变量过多时,如何快速的进行变量传递 此时就可以用到locals()获取本地变量,将变量变为字典传入 def intr ...

  4. JAVA记录-IntelliJ Idea 2017 免费激活方法(转载)

    1. 到网站 http://idea.lanyus.com/ 获取注册码. 2.填入下面的license server: http://intellij.mandroid.cn/ http://ide ...

  5. SQL记录-PLSQL游标

    PL/SQL游标 Oracle会创建一个存储区域,被称为上下文区域,用于处理SQL语句,其中包含需要处理的语句,例如所有的信息,行数处理,等等. 游标是指向这一上下文的区域. PL/SQL通过控制光标 ...

  6. 测试浏览器是否支持某个CSS属性

    花了几个小时写了个API,为了兼容多种用法和测试花了不少时间,求鞭打.嘲笑和建议. <!DOCTYPE HTML> <html lang="zh-CN"> ...

  7. [整理]IE11中的WebGL探秘:渲染速度超Chrome

    http://www.csdn.net/article/2013-12-19/2817854-IE11-WebGL-and-more 摘要:IE11开始支持WebGL,并且效果非常好,IE11的Web ...

  8. 打包部署到tomcat

    部署到tomcat的方法 注意:在eclipse 或 idea 上需要引入外部tomcat 1.将程序打成war包启动tomcat 2.将target 文件下内容压缩城zip,发布到tomcat RO ...

  9. rank over partition by

    高级函数,分组排序 over: 在什么条件之上. partition by e.deptno: 按部门编号划分(分区). order by e.sal desc: 按工资从高到低排序(使用rank() ...

  10. C++的那些事 1

    最近在看c++的一些库文件,里面的一些比较陌生但看起来挺有用的一些东西,在此记下,以免日后看到再翻找资料. template <size_t _Nb> 这是在看bitset的时候看到的,之 ...