だらだらやるよ。

こげつのIT技術メモ

WindowsMobile開発に手を出してみました。

しかも.NETじゃないやつ。
まぁなんで.NETじゃないかっていうと、Todayアプリケーション作りたいからなんですけどね
Todayに表示するにはネイティブで作る必要があるみたいなのですよ。。。
そんなわけでC++の勉強をしながら四苦八苦

とりあえずカメラアプリケーションいいなとか思ったので、ぐぐってみると
Codezineにカメラアプリの解説があったので、これを試してみることに
http://codezine.jp/article/detail/2244?p=1

あら、コンパイルが通りません。以下のようなエラーがでました

エラー	1	error LNK2005: "public: __cdecl std::_Lockit::_Lockit(void)" (??0_Lockit@std@@QAA@XZ) は既に xlock.lib(xlock.obj) で定義されています。	libcpmtd.lib	WM_Camera
エラー	2	error LNK2005: "public: __cdecl std::_Lockit::~_Lockit(void)" (??1_Lockit@std@@QAA@XZ) は既に xlock.lib(xlock.obj) で定義されています。	libcpmtd.lib	WM_Camera
エラー	3	fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。	Windows Mobile 6 Professional SDK	WM_Camera

どうやらライブラリの呼び出し順が問題みたいです。

解決方法と原因っぽいのは
http://support.microsoft.com/default.aspx?scid=kb;ja;148652
にありました。
で、方法1を使って回避したのですが、VS2008だけなのか、メニューの名前が違います。なのでVS2008での方法は以下(多分です、間違ってたらごめんなさい)

  1. [プロジェクト] メニューの [プロパティ] をクリックします。
  2. [ソリューションエクスプローラー]から、リンク エラーが発生しているプロジェクト構成をクリックします。
  3. [構成プロパティ]ツリーの[リンカ] で、[入力] をクリックします。
  4. [特定のライブラリの無視] ボックスに、ライブラリ名 (Nafxcwd.lib;Libcmtd.lib など) を挿入します。
  5. [モジュールをアセンブリに追加] ボックスにライブラリ名を挿入します。行の先頭に正しい順序で 2 つのライブラリが並ぶようにする必要があります (Nafxcwd.lib Libcmtd.lib など)。

とりあえずこれでコンパイルがとおり、サンプルのプロジェクトが実行できるようになりました。
うちのemonsterで実行してみましたが。。。画質がひどいですね、アドエス用だからかな?この辺はもうちょっと見てみる必要がありそうです。
が、がんばる!