exeを実行してもエラーダイアログが出る。前回と同じ。
参考
https://developer.gnome.org/gtkmm-tutorial/unstable/gtkmm-tutorial.html
ソースコード
simple.cc
#include <gtkmm.h>
int main(int argc, char *argv[])
{
auto app = Gtk::Application::create(argc, argv, "org.gtkmm.examples.base");
Gtk::Window window;
window.set_default_size(200, 200);
return app->run(window);
}
compile.bat
g++ simple.cc -o simple `pkg-config gtkmm-3.0 --cflags --libs`
コンパイルエラー
simple.cc: In function 'int main(int, char**)':
simple.cc:5:8: error: 'app' does not name a type
auto app = Gtk::Application::create(argc, argv, "org.gtkmm.examples.base");
^
simple.cc:8:10: error: 'app' was not declared in this scope
return app->run(window);
^
mingw32-make: *** [simple] Error 1
error: 'app' does not name a type
というメッセージから察するに、auto
型が使えないっぽい。
コードを以下のように修正。
ソースコード 2版
#include <gtkmm.h>
int main(int argc, char *argv[])
{
//auto app = Gtk::Application::create(argc, argv, "org.gtkmm.examples.base");
Glib::RefPtr< Gtk::Application > app = Gtk::Application::create(argc, argv, "org.gtkmm.examples.base");
Gtk::Window window;
window.set_default_size(200, 200);
return app->run(window);
}
実行エラー
コンパイル成功。しかし実行時にエラーダイアログが出る。
エラーは前回と同様。
「エントリポイントが見つかりません」 「プロシージャエントリポイント __gxx_personality_v0 がダイナミックリンクライブラリ libstdc++-6.dll から見つかりませんでした。」
g++ 2版
こちらを参考に、参照するパスを変更するも同様のエラー。
simple: simple.cc
g++ -std=c++11 -Wl,-rpath=C:/tools/mingw32/bin -o simple.exe simple.cc `pkg-config gtkmm-3.0 --cflags --libs` -mwindows
# g++ -o simple.exe simple.cc `pkg-config gtkmm-3.0 --cflags --libs` -mwindows
ちなみに、-std=c++11
でコンパイルするとauto
型が使えた。
しかし、実行エラーは出る。
ソースコード 3版
#include <gtkmm.h>
int main(int argc, char *argv[])
{
auto app = Gtk::Application::create(argc, argv, "org.gtkmm.examples.base");
//Glib::RefPtr< Gtk::Application > app = Gtk::Application::create(argc, argv, "org.gtkmm.examples.base");
Gtk::Window window;
window.set_default_size(200, 200);
return app->run(window);
}
所感
ソースコードの問題ではないっぽい。
次回はエラーの原因を考えてみる。