Quantcast
Viewing all articles
Browse latest Browse all 104

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

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

MFCプロジェクトを新規作成
②プロジェクトの設定を<標準Windowsライブラリを使用する>に変更
Image may be NSFW.
Clik here to view.
f:id:ishikawa-tatsuya:20161123001432p:plain

そしてビルド!
Image may be NSFW.
Clik here to view.
f:id:ishikawa-tatsuya:20161123001459p:plain

えー、怒られたじゃん・・・。まあ、普通はそうだよねー。
とは言え、ビルドできたって言ってるんだから、やってみようじゃないですか。

_AFXDLLを定義

エラーで_AFXDLLが定義されてないよって言われてるから、無理やり定義します。
Image may be NSFW.
Clik here to view.
f:id:ishikawa-tatsuya:20161123001909p:plain

で、ビルドすると・・・
Image may be NSFW.
Clik here to view.
f:id:ishikawa-tatsuya:20161123002032p:plain

あー、そういうと思ったよ。でもめげないよー。

_tWinMainを作成

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

externint 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 WinMainreturn AfxWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
}

さー、ビルド!おー、通ったよ。で実行すると・・・
Image may be NSFW.
Clik here to view.
f:id:ishikawa-tatsuya:20161123002639p:plain

動きましたー

結論

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

追伸

MFCたちもWindowsの仲間に入れてやってください・・・
Image may be NSFW.
Clik here to view.
f:id:ishikawa-tatsuya:20161123005416p:plain


Viewing all articles
Browse latest Browse all 104

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>