なぜか今日はMFCですw
とある人から「MFC共Cのプロジェクトを<標準Windowsライブラリを使用する>に変更してもビルド通るんだけど」って話を聞きました。んー、まあもともと共有DLLをリンクしてるからありえなくもないよなーっと思って実験してみました。
①MFCプロジェクトを新規作成
②プロジェクトの設定を<標準Windowsライブラリを使用する>に変更
そしてビルド!
えー、怒られたじゃん・・・。まあ、普通はそうだよねー。
とは言え、ビルドできたって言ってるんだから、やってみようじゃないですか。
_AFXDLLを定義
エラーで_AFXDLLが定義されてないよって言われてるから、無理やり定義します。
で、ビルドすると・・・
あー、そういうと思ったよ。でもめげないよー。
_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); }
さー、ビルド!おー、通ったよ。で実行すると・・・
動きましたー
結論
- 普通にやるとビルド通らない
- 無理やりやるとビルド通って実行もできる