2011年4月24日日曜日

メモ:WinMain をスタティックライブラリに含む方法

「Unicode 文字セットを使用する」にした_tWinMain 関数を含んだスタティックライブラリを作成し、リンクしようとすると次のようなエラーが出てリンクに失敗します。
error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。
いろいろ調べた結果、ある掲示板で答えを見つけたのでメモ。exe を作る方のプロジェクトのプロパティで「リンカー」→「詳細設定」→「エントリポイント」の項目に wWinMainCRTStartup と書くだけ。
理由ははっきりとは不明ですが、もともと Win32 では「マルチ バイト文字セットを使用する」では WinMain() が呼ばれ、「Unicode 文字セットを使用する」では wWinMain() が呼ばれるわけですが、スタティックライブラリに含める場合はこの設定にかかわらず WinMain() が呼ばれてしまうようでエラーになってしまうみたいです。なんでこんな罠が…。
ちなみにこちらは VisualStudio 2010 でのお話です。

2011年4月17日日曜日

義援金とか

なんだか最近、募金しました、寄付しました、みたいな記事が出ると、「どうせ売名だろ」みたいなこと言うのをよく見かけます。…それってどうなんでしょう?
募金して、誰か傷つきますか?迷惑になる人がいますか?寄付することは悪い行為ですか?
僕が不安になるのは、そういう風潮でもって、募金するためにまるで悪いことでもするみたいにこそこそしなくちゃいけないみたいな、そういう世界になってしまうのはどうなのかなと。そんな雰囲気をつくってしまうと、本当に善意の人も尻込みしてしまうんじゃないかなと。
別に、そうやって自分したことを自慢したいだけなんだなー、って思っても「えらいね。」「一つ、いいことしたね。」って嫌味なしに素直に言ってあげればみんないい気分で終わるだろうし、そう言っていれば「ああ、みんな募金してるんだな、僕も/私もしておこうかな」って周りも同調しやすいだろうし。そうやって助け合うことが当たり前っていう風潮を広めるべきなんじゃないかなと。
だから、僕はそれが誰であろうと、例え本当に売名目的であったとしても関係なく、素直に「えらいっ。」「よくやった。」と言ってあげたいと思う。今日は何かそんなことを思った。