MFCのダイアログで非表示のままDoModalする

Createで創ってから、RunModalLoop()を呼んでモーダルループに入る。
ダイアログリソースで「visible」をアンチェックしておく必要がある。

GCCのスタティックリンクの順番は大事

gccでライブラリをリンクするときは引数の順番をちゃんとしないとエラーになる。gccはリンクする際に引数の順番にライブラリを読んでいきそこで見つからない関数(どこか他のライブラリにあるはず)を見つけるとそれを「見つからないテーブル」に登録する。ライブラリを読み込む中でこの見つからないテーブルにある関数が見つかるとそれを解決する。問題は再帰的にやってくれないことで発生する。どうやら速度上の問題でそうなっているらしい。ライブラリの依存関係が相互依存する場合は同じライブラリを2回指定して回避する。

これはあくまでライブラリをリンクするときでオブジェクトファイルをリンクするときには当てはまらない。

実験

func.c

main.c

再帰的に検索する

-Wl,–start-group-Wl,–end-groupでライブラリを括るとこの問題が解決できるが先にも書いたように遅くなる場合がある。

wxWidgetsの使い方 その3 Linuxで使う

連載

その1
その2
その3

前回の続き。前回のプロジェクトをLinuxにもってきてビルドできるようにする。

環境

インストール

公式からwxWidgets-3.0.2.tar.bz2をダウンロードして~/local/wxWidgets-3.0.2に展開。

wxWidgetsのビルド

makeに-j2をつけると2つのプロセスでパラレルにやる。

次に同様にリリースをビルド

eclipseでアプリをビルド

eclipseに渡す環境変数を登録するスクリプトを作成、起動も兼ねる。
~/local/wxWidgets-3.0.2/mybuild/cdtstartを以下で作成

wx-configツールが使えるのでこれを使ってフラグなどを設定する。

起動してビルドして実行

リリースバージョンを実行
screenshot_2016-12-04_00-13-29

wxWidgetsの使い方 その2 MingWとEclipseCDT

連載

その1
その2
その3

環境

Windows 8 32bit

MingWのインストール

公式からインストール、ここではC:\local\MinGWにインストール。パッケージは以下
clipshot-2016-12-03-00-01-05

wxWidgetsのビルド

公式からwxWidgets-3.0.2.7zをダウンロードして、C:\local\wxWidgets-3.0.2に展開。

C:\local\MinGW\msys\1.0\msys.batを実行しmsysを開く。

Debugでビルドする。

成功すればC:\local\wxWidgets-3.0.2\lib\gcc_lib以下にファイルができる。

EclipseCDTのインストール

公式からダウンロード、ここではeclipse-cpp-neon-1a-win32.zipをダウンロードし、C:\local\eclipseに展開。

起動用バッチC:\local\eclipse\start.batを作成。

start.batから起動し、C++プロジェクトを作成
clipshot-2016-12-03-00-23-24

C++ソースhello.cppを追加し以下のように作成。

ここではプロジェクトのパスなどの設定は環境変数で行う。このプロジェクト自体をLinuxでも開きたいのでそうする。start.batを以下のように書き換える。

ビルド確認のため、-Wl,–start-group-Wl,–end-groupを指定している。このフラグはライブラリの循環参照をしてくれるため記述の順番を考慮しなくていい。しかし遅くなるとのことなのでいったんビルドが成功したら外したほうがいいがその時リンクエラーになるかもしれない。

ここで作成したCPPFLAGSWXLIBFLAGSをプロジェクトの設定で追加する。
clipshot-2016-12-03-18-54-56

clipshot-2016-12-03-18-56-38

ビルドして実行

clipshot-2016-12-03-19-30-20

リリースバージョンも含めてちゃんとつくる

wxWidgetsのビルド

start.bat編集

プロジェクトの設定でCPPFLAGSとWXLIBFLAGSを変えてDやRをつける。デバッグはD、リリースはR

デバッグしてみるとデバッガのステップがおかしい、-O2でビルドされているかもしれないがスルー

wxWidgetsの使い方

連載

その1
その2
その3

wxWidgetsはクロスプラットフォームなGUIライブラリ、ここではWindowsでアプリをつくってみる。

環境

Windows 10
Visual C++ 2008 Express

インストール

公式からwxWidgets-3.0.2.7zをダウンロードして、C:\local\wxWidgets-3.0.2に展開。
VC2008でC:\local\wxWidgets-3.0.2\build\msw\wx_vc9.slnを開く。
Debugでビルドする。
成功すればC:\local\wxWidgets-3.0.2\lib\vc_lib以下にファイルができる。

アプリ作成

VC2008を新規に起動し、新しいプロジェクトを作成、場所や名前は任意。
clipshot-2016-12-02-06-05-36

空のプロジェクトを選択
clipshot-2016-12-02-06-06-56

新しい項目の追加でmain.cppを追加
clipshot-2016-12-02-06-07-53

プロジェクト設定

追加のインクルードディレクトリで
C:\local\wxWidgets-3.0.2\includeC:\local\wxWidgets-3.0.2\lib\vc_lib\mswudを追加。
clipshot-2016-12-02-06-12-13

追加のライブラリディレクトリでC:\local\wxWidgets-3.0.2\lib\vc_libを追加
clipshot-2016-12-02-06-13-22

コマンドプロンプトで以下を実行してインポートするライブラリ一覧を得る。今はデバッグビルドしかしてないので全部デバッグライブラリ。リリースライブラリも同じディレクトリにできるのでリリースの設定の時はいったん全部削除したほうがいい。

上記のライブラリと、Rpcrt4.libComctl32.libを追加のライブラリに加える。(上記のライブラリは本当に全部必要かは分からないが面倒なので全部指定した。)
clipshot-2016-12-02-06-22-04

main.cpp

以下を作成。

ビルドして実行

clipshot-2016-12-02-06-25-16

fedoraでデスクトップ環境を変える

fedora25で実験。デフォルトはすごく重かったので変えようと思ったけどいつの間にか普通になったけど。

一覧の列挙

インストール

デスクトップの変更

ログアウトしてから選択できる。

a