進入 project-->setting--> c/c++ page,做以下修改:
1. 在preprocessor definitions中加入_afxdll,加入後的設定大概是這樣的:
win32,_debug / nodebug,[_console],[_mbcs],_afxdll
加入的_afxdll是關鍵 ,它欺騙mfc lib,避免連線 mfc 的 winmain 函式。
2. 修改project options,將 /mt或者 /ml標誌改為 /md。
原因是在 afxver_.h 中會檢查_afxdl, _mt, _dll 標誌是否同時設定,否則報錯。儘管鏈結 for multi-threaded 版本的 library 會損失一些效能,但是這個標誌的存在並不導致編譯器把 project 編譯成 dll。
#define vc_extralean // exclude rarely-used stuff from windows headers
#include
#include // mfc core and standard components
#include // mfc extensions
#include // mfc support for internet explorer 4 common controls
#ifndef _afx_no_afxcmn_support
#include // mfc support for windows common controls
#endif // _afx_no_afxcmn_support
4. 在project的winmain / main中加入mfc的初始化**,以下是_twinmain和_tmain的情況:
extern "c" int winapi
_twinmain(hinstance hinstance, hinstance hprevinstance,
lptstr lpcmdline, int ncmdshow)
int nretcode = 0;
if (!afxwininit(::getmodulehandle(null), null, ::getcommandline(), 0))
trace0("fatal error: mfc initialization failed.\n");
nretcode = 1;
else
// actual winmain codes ...
afxwinterm();
return nretcode;
int _tmain(int argc, tchar* argv, tchar* envp)
int nretcode = 0;
if (!afxwininit(::getmodulehandle(null), null, ::getcommandline(), 0))
cerr << _t("fatal error: mfc initialization failed") << endl;
nretcode = 1;
else
// actual main codes ...
afxwinterm();
return nretcode;
#include
static afx_extension_module projectdll = ;
extern "c" int apientry
dllmain(hinstance hinstance, dword dwreason, lpvoid lpreserved)
// remove this if you use lpreserved.
unreferenced_parameter(lpreserved);
if (dwreason == dll_process_attach)
// extension dll one-time initialization.
if (!afxinitextensionmodule(projectdll, hinstance))
trace0("project.dll initialize its extension module failed!\n");
return false;
// cdynlinklibrary』s destructor will be called in afxtermextensionmodule.
new cdynlinklibrary(projectdll);
else if (dwreason == dll_process_detach)
trace0("project.dll terminating...\n");
// terminate the library before destructors are called.
afxtermextensionmodule(projectdll);
return true; // ok.
架設VS2003專案
哎呀,討厭搞vs2003版本開發的專案啊,稀奇古怪的東西一大堆。可憐的我又要去維護。第一步專案源 拷過來,到本機解壓開啟 sln 的解決方案先看下 找到http localhost 8888 technew tech.csproj 那本機先部署iis 埠8888 名稱 technew 這個隨意,之後...
建立乙個沒有視窗的WIN32專案
在windows程式設計中,我們不需要顯示視窗,也不想在工作列中顯示,但卻需要用到訊息迴圈,這時候我們就需要建立乙個不顯示視窗的win32程式。只需要將vs自動生成的框架中的 hwnd hwnd createwindoww cw usedefault,0,cw usedefault,0,nullpt...
VS建立空的Win32程式
在visual studio中直接新建空專案在 中加入windows入口點的 編譯會發生錯誤,但是新建windows桌面應用程式初始的 和資源太多,本文將給出建立空win32專案的方法 新建空專案 右鍵單擊解決方案下的工程 本例中為sample 點選屬性 r 在鏈結器中系統選項下的子系統設定為 視窗...