關於fcitx rime版本的源代碼模塊注册疑問

43 views
Skip to first unread message

jianming....@gmail.com

unread,
Sep 7, 2014, 1:07:48 PM9/7/14
to rime-...@googlegroups.com
大家好:
最進在學習FCITX RIME的源代码。在分析代碼的過程中,有一個疑問。就是在fcitx
輸入框架中,在FcitxRimeCreate中初始化一些参數時,在FcitxRimeStart里rime_api在
setup和init時,都没有看到有对module向modulemanager迸行注册的地方。

這裡就有一個疑問,如果提前對模塊進行注册的話,在rime_api進行初始化時,可
能就有問題了。應該會初始化失敗。

在看rime core代碼時,唯一看到對模塊進行注册的宏RIME_REGISTER_MODULE,在
fcitx-rime的代碼中没有找到調用點。

可能是我自已理解錯誤。請弓辰兄或其他熟悉這一塊代碼的兄弟略微指點。


非常感謝。


祝大家中秋快欒。

佛振

unread,
Sep 7, 2014, 8:03:07 PM9/7/14
to rime-...@googlegroups.com
有個技巧。
在 include/rime_api.h 中定義的 RIME_MODULE_INITIALIZER 宏負責在模塊(主模塊或 .so/.dylib/.DLL)加載時執行一個初始化函數。GCC 和 MSVC 各自有一套指令完成在模塊加載時自動執行。
使用這個機制是爲了支持編譯成動態庫的插件。

Moritz於 2014年9月8日星期一UTC+8上午1時07分48秒寫道:

Moritz.chen

unread,
Sep 8, 2014, 9:08:37 AM9/8/14
to rime-...@googlegroups.com
感謝弓辰兄的指點,還想深入了解一下模塊加载的機制,請問是否有相關的资料可供参考。白天在綱絡上搜了一下,并沒有找到有效的信息。

謝謝。


於 西元2014年09月08日 08:03, 佛振 提到:
--

---
這是 Google 網上論壇針對「rime-devel」群組發送的訂閱通知郵件。
如要取消訂閱這個群組並停止接收來自這個群組的郵件,請傳送電子郵件到 rime-devel+...@googlegroups.com
如需更多選項,請前往:https://groups.google.com/d/optout

Moritz's Life Mail

unread,
Sep 13, 2014, 2:31:24 PM9/13/14
to rime-...@googlegroups.com
佛振兄:
    請問一下,如果在linux平台上安装的fcitx-rime。那麽解它的運行日志文件輸出在那裡?我按照說明,在/tmp目录下並未發現在RIME的日 志文件,或是因為要打開調試開關?



佛振 於 西元2014年09月08日 08:03 寫道:
有個技巧。
在 include/rime_api.h 中定義的 RIME_MODULE_INITIALIZER 宏負責在模塊(主模塊或 .so/.dylib/.DLL)加載時執行一個初始化函數。GCC 和 MSVC 各自有一套指令完成在模塊加載時自動執行。
使用這個機制是爲了支持編譯成動態庫的插件。

Moritz於 2014年9月8日星期一UTC+8上午1時07分48秒寫道:
大家好:
        最進在學習FCITX RIME的源代码。在分析代碼的過程中,有一個疑問。就是在fcitx
輸入框架中,在FcitxRimeCreate中初始化一些参數時,在FcitxRimeStart里 rime_api在
setup和init時,都没有看到有对module向modulemanager迸行注册的地方。

        這裡就有一個疑問,如果提前對模塊進行注册的話,在rime_api進行初始化時,可
能就有問題了。應該會初始化失敗。

        在看rime core代碼時,唯一看到對模塊進行注册的宏RIME_REGISTER_MODULE, 在
fcitx-rime的代碼中没有找到調用點。

       可能是我自已理解錯誤。請弓辰兄或其他熟悉這一塊代碼的兄弟略微指點。


                                                                非 常感謝。


                                                                祝 大家中秋快欒。

弓辰

unread,
Sep 14, 2014, 3:01:45 AM9/14/14
to rime-...@googlegroups.com
位於 /tmp
此處代碼指定日誌文件名的前綴
https://github.com/fcitx/fcitx-rime/blob/master/src/fcitx-rime.c#L85

Moritz's Life Mail

unread,
Sep 14, 2014, 3:05:44 AM9/14/14
to rime-...@googlegroups.com
我在/tmp下查过了,但并没有找到"rime.fcitx-rime"为文件名的日志文件,或其他類型的文件。
是不是需要打開日志開關?


弓辰 於 西元2014年09月14日 15:01 寫道:
位於 /tmp
此處代碼指定日誌文件名的前綴
https://github.com/fcitx/fcitx-rime/blob/master/src/fcitx-rime.c#L85
Moritz's Life Mail <jianming....@gmail.com> 於 2014年9月14日 上午2:31 寫道:
佛振兄:
    請問一下,如果在linux平台上安装的fcitx-rime。那麽解它的運行日志文件輸出在那裡?我按照說明,在/tmp目录下並未發現在RIME的日 志文件,或是因為要打開調試開關?


佛振 於 西元2014年09月08日 08:03 寫道:
有個技巧。
在 include/rime_api.h 中定義的 RIME_MODULE_INITIALIZER 宏負責在模塊(主模塊或 .so/.dylib/.DLL)加載時執行一個初始化函數。GCC 和 MSVC 各自有一套指令完成在模塊加載時自動執行。
使用這個機制是爲了支持編譯成動態庫的插件。

Moritz於 2014年9月8日星期一UTC+8上午1時07分48秒寫道:
大家好:
        最進在學習FCITX RIME的源代码。在分析代碼的過程中,有一個疑問。就 是在fcitx
輸入框架中,在FcitxRimeCreate中初始化一些参數時,在 FcitxRimeStart里 rime_api在
setup和init時,都没有看到有对module向modulemanager迸行注册的 地方。

        這裡就有一個疑問,如果提前對模塊進行注册的話,在rime_api進 行初始化時,可
能就有問題了。應該會初始化失敗。

        在看rime core代碼時,唯一看到對模塊進行注册的宏RIME_REGISTER_MODULE, 在
fcitx-rime的代碼中没有找到調用點。

       可能是我自已理解錯誤。請弓辰兄或其他熟悉這一塊代碼的兄弟略微指點。


                                                                非 常感謝。


                                                                祝 大家中秋快欒。

--

---
這是 Google 網上論壇針對「rime-devel」群組發送的訂閱通知郵件。
如要取消訂閱這個群組並停止接收來自這個群組的郵件,請傳送電子郵件到 rime-devel+...@googlegroups.com
如需更多選項,請前往:https://groups.google.com/d/optout
--

---
這是 Google 網上論壇針對「rime-devel」群組發送的訂閱通知郵件。
如要取消訂閱這個群組並停止接收來自這個群組的郵件,請傳送電子郵件到 rime-devel+...@googlegroups.com
如需更多選項,請前往:https://groups.google.com/d/optout

弓辰

unread,
Sep 14, 2014, 3:13:56 AM9/14/14
to rime-...@googlegroups.com
檢查以下兩點:
1. librime 在編譯時未禁用日誌
2. 該 fcitx-rime 代碼設置了 RimeTraits.app_name 參數並調用了這個 API

Moritz's Life Mail

unread,
Sep 14, 2014, 3:26:53 AM9/14/14
to rime-...@googlegroups.com
是的。从cmake和初始化代碼中确實是應該有日誌文件生成,但装/tmp目錄下卻沒有,很詭異。



弓辰 於 西元2014年09月14日 15:13 寫道:
檢查以下兩點:
1. librime 在編譯時未禁用日誌
2. 該 fcitx-rime 代碼設置了 RimeTraits.app_name 參數並調用了這個 API
Moritz's Life Mail <jianming....@gmail.com> 於 2014年9月14日 下午3:05 寫道:
我在/tmp下查过了,但并没有找到"rime.fcitx-rime"为 文件名的日志文件,或其他類型的文件。
是不是需要打開日志開關?


弓辰 於 西元2014年09月14日 15:01 寫道:
位於 /tmp
此處代碼指定日誌文件名的前綴
https://github.com/fcitx/fcitx-rime/blob/master/src/fcitx-rime.c#L85
Moritz's Life Mail <jianming....@gmail.com> 於 2014年9月14日 上午2:31 寫道:
佛振兄:
    請問一下,如果在linux平台上安装的fcitx-rime。那麽解它的運行日志文件輸出在那裡?我按照說明,在/tmp目录下並未發現在RIME的日 志文件,或是因為要打開調試開關?


佛振 於 西元2014年09月08日 08:03 寫道:
有個技巧。
在 include/rime_api.h 中定義的 RIME_MODULE_INITIALIZER 宏負責在模塊(主模塊或 .so/.dylib/.DLL)加載時執行一個初始化函數。GCC 和 MSVC 各自有一套指令完成在模塊加載時自動執行。
使用這個機制是爲了支持編譯成動態庫的插件。

Moritz於 2014年9月8日星期一UTC+8上午1時07分48秒寫道:
大家好:
        最進在學習FCITX RIME的源代码。在分析代碼的過程中,有一個疑問。就 是在fcitx
輸入框架中,在FcitxRimeCreate中初始化一些参數時, 在 FcitxRimeStart里 rime_api在
setup和init時,都没有看到有对module向 modulemanager迸行注册的 地方。
Reply all
Reply to author
Forward
0 new messages