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での方法は以下(多分です、間違ってたらごめんなさい)
- [プロジェクト] メニューの [プロパティ] をクリックします。
- [ソリューションエクスプローラー]から、リンク エラーが発生しているプロジェクト構成をクリックします。
- [構成プロパティ]ツリーの[リンカ] で、[入力] をクリックします。
- [特定のライブラリの無視] ボックスに、ライブラリ名 (Nafxcwd.lib;Libcmtd.lib など) を挿入します。
- [モジュールをアセンブリに追加] ボックスにライブラリ名を挿入します。行の先頭に正しい順序で 2 つのライブラリが並ぶようにする必要があります (Nafxcwd.lib Libcmtd.lib など)。
とりあえずこれでコンパイルがとおり、サンプルのプロジェクトが実行できるようになりました。
うちのemonsterで実行してみましたが。。。画質がひどいですね、アドエス用だからかな?この辺はもうちょっと見てみる必要がありそうです。
が、がんばる!