2017-07-10 5 views
-1

少し時間を置いて、ウィンドウを2回閉じる(メインウィンドウを破棄しない)岩。コードはエラーや警告なしでコンパイルされますが、 "on_window_sidebar1_back_clicked"をトリガーするボタンを押すと、プログラムを実行しているコンソールがエラー"Could not find signal handler 'on_window_sidebar1_back_clicked'. Did you compile with -rdynamic?を吐き出します。GTK C "シグナルハンドラを見つけることができませんでした。" -rdynamicでコンパイルしましたか?

ive私のコンパイラを-rdynamicで実行すると、それは役に立ちません。

ウィンドウを閉じるための責任のコードの一部:

void on_window_sidebar1_back_clicked() 
{ 
    void 
    gtk_close_window(secondWindow); //sedondWindow is defined further up. no errors related to it. 
} 

私window_main.glade(警告LONG!)

<?xml version="1.0" encoding="UTF-8"?> 
<!-- Generated with glade 3.18.3 --> 
<interface> 
    <requires lib="gtk+" version="3.10"/> 
    <object class="GtkWindow" id="window_main"> 
    <property name="width_request">800</property> 
    <property name="height_request">480</property> 
    <property name="can_focus">False</property> 
    <property name="title" translatable="yes">test</property> 
    <property name="default_width">800</property> 
    <property name="default_height">480</property> 
    <property name="skip_taskbar_hint">True</property> 
    <property name="decorated">False</property> 
    <property name="deletable">False</property> 
    <signal name="destroy" handler="on_window_main_destroy" swapped="no"/> 
    <child> 
     <object class="GtkFixed" id="fixed1"> 
     <property name="visible">True</property> 
     <property name="can_focus">False</property> 
     <child> 
      <object class="GtkLabel" id="lbl_test"> 
      <property name="width_request">100</property> 
      <property name="height_request">30</property> 
      <property name="visible">True</property> 
      <property name="can_focus">False</property> 
      <property name="label" translatable="yes">test</property> 
      </object> 
      <packing> 
      <property name="x">400</property> 
      <property name="y">190</property> 
      </packing> 
     </child> 
     <child> 
      <object class="GtkLabel" id="lbl_count"> 
      <property name="name">3</property> 
      <property name="width_request">100</property> 
      <property name="height_request">30</property> 
      <property name="visible">True</property> 
      <property name="can_focus">False</property> 
      <property name="label" translatable="yes">label</property> 
      </object> 
      <packing> 
      <property name="x">400</property> 
      <property name="y">240</property> 
      </packing> 
     </child> 
     <child> 
      <object class="GtkButton" id="btn_count"> 
      <property name="label" translatable="yes">get count</property> 
      <property name="width_request">100</property> 
      <property name="height_request">34</property> 
      <property name="visible">True</property> 
      <property name="can_focus">True</property> 
      <property name="receives_default">True</property> 
      <signal name="clicked" handler="on_btn_count_clicked" swapped="no"/> 
      </object> 
      <packing> 
      <property name="x">400</property> 
      <property name="y">290</property> 
      </packing> 
     </child> 
     <child> 
      <object class="GtkButton" id="nonconfigured2"> 
      <property name="label" translatable="yes">button</property> 
      <property name="width_request">100</property> 
      <property name="height_request">100</property> 
      <property name="visible">True</property> 
      <property name="can_focus">True</property> 
      <property name="receives_default">True</property> 
      </object> 
      <packing> 
      <property name="x">700</property> 
      <property name="y">200</property> 
      </packing> 
     </child> 
     <child> 
      <object class="GtkButton" id="sidebar_1"> 
      <property name="label" translatable="yes"> open 
window 
    1</property> 
      <property name="width_request">100</property> 
      <property name="height_request">100</property> 
      <property name="visible">True</property> 
      <property name="can_focus">True</property> 
      <property name="receives_default">True</property> 
      <signal name="clicked" handler="on_sidebar_1_clicked" swapped="no"/> 
      </object> 
      <packing> 
      <property name="x">700</property> 
      <property name="y">100</property> 
      </packing> 
     </child> 
     </object> 
    </child> 
    </object> 
    <object class="GtkWindow" id="window_sidebar1"> 
    <property name="width_request">800</property> 
    <property name="height_request">480</property> 
    <property name="can_focus">False</property> 
    <property name="resizable">False</property> 
    <property name="hide_titlebar_when_maximized">True</property> 
    <property name="decorated">False</property> 
    <property name="deletable">False</property> 
    <child> 
     <object class="GtkFixed" id="fixed2"> 
     <property name="visible">True</property> 
     <property name="can_focus">False</property> 
     <child> 
      <object class="GtkButton" id="window_sidebar1_back"> 
      <property name="label" translatable="yes">BACK</property> 
      <property name="width_request">70</property> 
      <property name="height_request">30</property> 
      <property name="visible">True</property> 
      <property name="can_focus">True</property> 
      <property name="receives_default">True</property> 
      <signal name="clicked" handler="on_window_sidebar1_back_clicked" swapped="no"/> 
      </object> 
      <packing> 
      <property name="x">50</property> 
      <property name="y">400</property> 
      </packing> 
     </child> 
     </object> 
    </child> 
    </object> 
</interface> 

これを引き起こしている可能性がどのような任意のアイデア?そして主題に焦点を当てさせる。

編集:HERESに私のメイク

# change application name here (executable output name) 
TARGET=ETE 

# compiler 
CC=/usr/bin/arm-linux-gnueabihf-gcc 
# debug 
DEBUG=-g 
# optimisation 
OPT=-O0 
# warnings 
WARN=-Wall 

PTHREAD=-pthread 

CCFLAGS=$(DEBUG) $(OPT) $(WARN) $(PTHREAD) -pipe 

GTKLIB=`pkg-config --cflags --libs gtk+-3.0` -rdynamic 

# linker 
LD=gcc 
LDFLAGS=$(PTHREAD) $(GTKLIB) -export-dynamic 

OBJS= main.o 

all: $(OBJS) 
    $(LD) -o $(TARGET) $(OBJS) $(LDFLAGS) 

main.o: src/main.c 
    $(CC) -c $(CCFLAGS) src/main.c $(GTKLIB) -o main.o 

clean: 
    rm -f *.o $(TARGET) 
+0

エラーメッセージにはコンパイルオプションが関係しているので、コンパイルとリンクのコマンドは関係がありませんか? –

+0

なぜ 'gtk_close_window(secondWindow);の前に' void'がありますか?おそらく間違いでしょうか? – Ctx

+0

GtkButtonの 'clicked'シグナルのコールバックプロトタイプは確かに間違っています。信号を接続するコードを追加し、コードがどのように構成されているかを説明してください(単一ファイルまたは複数ファイル)。 –

答えて

0

私の問題は、USERのEND ON ERRORました。私は終わりの装置の上のビルドをきれいにするのを忘れて、そこにいくつかの重複するディレクトリを持っていました。リポジトリを動かすとき、linuxは古いものに優先順位をつけることに決めました。問題は解決され、驚くべきことに、コードは機能します。

EDIT:

私はまた、代わりに

void on_window_sidebar1_back_clicked() 
{ 
    void 
    gtk_close_window(secondWindow); //sedondWindow is defined further up. no errors related to it. 
} 

void on_sidebar1_back_clicked() 
{ 
    gtk_widget_destroy(GTK_WIDGET(secondWindow)); 
} 

を使用するように切り替えて(人間の)メモリの問題を回避するために、少し短くなるように、私の信号を変更しました。

関連する問題