看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) GCC 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) gtk2.0 問題(Question): 我打算用gtk畫一個drawarea出來,在它做完了時候,執行一段code 所以想使用realize的event來觸發callback function。 所以,我在xml的內容寫了這段 <object class="drawarea" id="Draw"> <signal name="realize" handler="realize_cb" /> </object> 而main中,宣告: gboolean realize_cb(GtkWidget *widget, GdkEvent *ev gpointer data){ // do something fprintf(stderr, "check"); } 這段callback function。 另外在main program裡,用 GtkWidget *Drawarea = GTK_WIDGET(gtk_builder_get_object(builder, "Draw")); 取得這個Widget的設定, 然後 gtk_widget_realize(Drawarea); 實作它。 compile的階段沒有問題,但是卻沒有進到callback裡; 不過如果是用 gtk_signal_connect(G_OBJECT(Drawarea), G_CALLBACK(realize_cb)); 來連結就可以成功, 請問我還缺了什麼設定才能把這個連接起來? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.21.58 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1414144144.A.9E3.html
Bencrie: linker 上 --export-dynamic 看有沒有用 10/24 19:38
Bencrie: 另外你有 call gtk_builder_connect_signals 嗎? 10/24 19:42
chigi: 我都試試看,看起來很像這兩個原因~等等還回報。 10/27 09:36
chigi: 試了,有改善,至少有連到,但是它現在在執行的時候找不到 10/27 11:39
chigi: handler, 還在想辦法解決中.. 10/27 11:40
按照一樓大大的解法弄好了! 重點在幾個: 1. gtk_build_connect_singals() 2. linker 要加上export_dynamic 3. 用 extern "C" G_MODULE_EXPORT 結案。 ※ 編輯: chigi (220.135.21.58), 10/27/2014 14:50:12 ※ 編輯: chigi (220.135.21.58), 10/27/2014 14:55:18
Bencrie: 有 C++ 怎麼還用 gtk XDD 10/27 17:05
chigi: 痾,工作需求..@@ 10/30 12:08