ラベル VS2010 の投稿を表示しています。 すべての投稿を表示
ラベル VS2010 の投稿を表示しています。 すべての投稿を表示

2011年4月24日日曜日

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

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

2011年2月15日火曜日

「メソッドまたは操作は実装されていません。」だって。

ちょっと前に作ったソフトを修正するため VisualStudio 2010 を久々に起動しコンパイルをしようとすると、
「メソッドまたは操作は実装されていません。」
というダイアログがでてコンパイルできない症状が発生しました。
右クリックメニューからコンパイルを選択すると一応コンパイルはできるものの、実行しようとすると
「メソッドまたは操作は実装されていません。」
はて?
同ソリューション内のインストーラを作成するプロジェクトをビルドしようとしても
「メソッドまたは操作は実装されていません。」
…困った。
ググってみても同じような症状はほとんどなし。唯一似たような症状は「再現性なし」で解決されている始末。
 ソリューションからプロジェクトを一つ消すと動作するのですが、再度プロジェクトを追加するとまた同じダイアログがでて動作しなくなる…。

 結局、いろいろ調べた結果、VisualStudio の IDE にインストールしたプラグインが悪さしていると判明。うちの仕事関係の一般公開されてない代物なのですが、これをアンインストールしたら問題なく動作するようになりました。
 問題が起こっていたのはそのプラグインに関連しないプロジェクトだったので、そこに行き当たるまでかなり時間をロスしました…orz
 VisualStudio 自体のバグではなかったわけですが、何によって発生されたエラーかぐらい表示して欲しいものです…。