読者です 読者をやめる 読者になる 読者になる

ささいなことですが。

Windowsアプリテスト自動化ライブラリFriendly開発者の日記です。

MFCのプロジェクト設定を変えてみる

なぜか今日はMFCですw
とある人から「MFC共Cのプロジェクトを<標準Windowsライブラリを使用する>に変更してもビルド通るんだけど」って話を聞きました。んー、まあもともと共有DLLをリンクしてるからありえなくもないよなーっと思って実験してみました。

MFCプロジェクトを新規作成
②プロジェクトの設定を<標準Windowsライブラリを使用する>に変更
f:id:ishikawa-tatsuya:20161123001432p:plain
そしてビルド!
f:id:ishikawa-tatsuya:20161123001459p:plain
えー、怒られたじゃん・・・。まあ、普通はそうだよねー。
とは言え、ビルドできたって言ってるんだから、やってみようじゃないですか。

_AFXDLLを定義

エラーで_AFXDLLが定義されてないよって言われてるから、無理やり定義します。
f:id:ishikawa-tatsuya:20161123001909p:plain
で、ビルドすると・・・
f:id:ishikawa-tatsuya:20161123002032p:plain
あー、そういうと思ったよ。でもめげないよー。

_tWinMainを作成

たしかappmodul.cppにそんなの定義されてたよねー。その関数だけコピってきます。
で、これをMainFrm.cppの最後に貼る。(場所はどこでもいいです。)

extern int AFXAPI AfxWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
	_In_ LPTSTR lpCmdLine, int nCmdShow);

extern "C" int WINAPI
_tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
	_In_ LPTSTR lpCmdLine, int nCmdShow)
#pragma warning(suppress: 4985)
{
	// call shared/exported WinMain
	return AfxWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
}

さー、ビルド!おー、通ったよ。で実行すると・・・
f:id:ishikawa-tatsuya:20161123002639p:plain
動きましたー

結論

  • 普通にやるとビルド通らない
  • 無理やりやるとビルド通って実行もできる

追伸

MFCたちもWindowsの仲間に入れてやってください・・・
f:id:ishikawa-tatsuya:20161123005416p:plain