今さらですが、Embedded機能が統合されたVisualStudio2005のVC8.0を使ってWindowsCEアプリ開発用のセッティングをしました。
まぁ、どうでもいい事なんですが、日本語の情報を残すためと自分の備忘録として書いておきます。
ところでVisualStudio2005はインストール中に妙な目つきの男に睨まれるのですごい不快です。この写真超要らないと思うんですけど・・。
Microsoftのセンスの悪さは相変わらずです。
1つ前のVisualStudio2003のインストーラーは初めて見てもどうやってインストールしていいのか理解不能というUIの判りにくさ、かつ異様なまでのインストール所要時間とかで別の意味で酷かったのですが、その部分は改善されてます。
さて、過去のプロジェクト(C++)を移行したところ以下のリンクエラーが発生。
(1)error LNK2001: 外部シンボル "__security_check_cookie" は未解決です。
(2)error LNK2001: 外部シンボル ""const type_info::`vftable'" (??_7type_info@@6B@)" は未解決です。
1個目は新たに導入されたバッファ保護用に自動挿入されるセキュリティチェックコード機能に関する物だとは判るのですが、PocketPC/WindowsCE環境での対処方がさっぱり判りません。エラーの原因としてはセキュリティチェックコード自体がどこにも無いためにリンクエラーになってるようです。
2個目についてはもう全く検討すら付きません。
試行錯誤の結果、1個目はstring.h等にある標準関数を使うと発生、2個目は例外処理を使うと出るような気がする事が判明。
色々検索式を考えて検索してみるも日本語の情報が全く見当たりません。Googleで0件とか・・。
・・・誰も困ってないのコレ????
やむを得ず目から血を流しながら英語を読んで以下の記事を発見。
>It printed out zillions of errors that I'd never seen before in my EVC++ environment. Luckily all errors belong to either of the following two:~(以下略)
ここに記載されているMSKBの記事も参照。
ああ、もう長いタイトルだな。日本人の身にもなれ。
で、このKBによるとからWin32環境では「bufferoverflowU.lib」をリンクすれば良いようですが、PocketPCでは見当たりません。
libフォルダを検索すると「secchk.lib」にセキュリティチェックのコードが含まれているそうなのでこれをリンクします。
これで1個目の問題は解決。
しかしこんな頻出しそうなエラーに対して何で何の情報も出てないんだろう。
そして次、こちらはKBが内容そのもの。
参考:「The Run-time Type Information library for the Pocket PC 2003 SDK is available」
>"throw" コンストラクト、"catch" コンストラクト、またはその両方をデータ型で使用する C++ 例外処理コードでは、例外の種類を識別するために RTTI サポートが必要です。
という訳で、このページで配布されている「RITTI.exe」をダウンロードして解凍すると出てくる「ccrtrtti.lib」をリンクすれば良いようですが、手元にあったVisualStudio2005 Professional Edition(製品版)には元々全く同じファイルが既に含まれていました。なのでリンクだけすれば良いと思います。
これで無事リンクが通り、開発環境が整いました。
だいぶ使いやすい気がします。
W-ZERO3とかの開発用などに役立てたいところ。
僕は持ってませんが。
・・・問題は愛用のsigmarionIII(WindowsCE.NET4.0)に対応できない事かなぁ。。しばらくはeVC4.0との併用になりそうです。