276 舉例說明使用c++模板 list 查詢的實現:
先定義struct結構,存放要查詢的資料結構,
typedef struct structa
}structa, *pstructa;
再定義列表,
typedef listtstructlist;
定義查詢的operator class,此處以字串為查詢條件
呼叫語法類似於:
tstructlist::iterator iter = find_if(列表變數.begin(), 列表變數.end(), bind2nd(cfindfuncbyhandle(), 查詢條件字串));
find_if函式在系統標頭檔案algorithm中定義。
vc下編譯時c與c++環境切換方法:
一,問題描述
error lnk2001: unresolved external symbol _winmain@16
debug/main.exe:fatal error lnk 1120:1 unresolved externals
error executing link.exe;
二,產生這個問題可能的原因
1, 你用vc建了乙個控制台程式,它的入口函式應該是main, 而你使用了winmain.
2. 你用vc開啟了乙個.c/.cpp 檔案,然後直接編譯這個檔案,這個檔案中使用了winmian而不是main作為入口函式。vc這時的預設設定是針對控制台程式的。
三, 解決方法
1.進入project->setting->c/c++, 在category中選擇preprocessor,在processor definitions中刪除_console, 新增_windows
2.進入project->setting->link, 在project options中將 /subsystem:console改為/subsystem:windows.
3.儲存設定,rebuild all.
vs2005中的設定請參考對應項進行設定
四,vs2005中的設定
1.選單中選擇 project->properties, 彈出property pages視窗
2.在左邊欄中依次選擇:configuration properties->c/c++->preprocessor,然後在右邊欄的preprocessor definitions對應的項中刪除_console, 新增_windows.
3.在左邊欄中依次選擇:configuration properties->linker->system,然後在右邊欄的subsystem對應的項改為windows(/subsystem:windows)
4.rebuild all. ok ?
測試:(環境:vs2005,程式語言vc)
// test.c
#i nclude
int apientry winmain(hinstance hinstance,
hinstance hprevinstance,
lpstr lpcmdline,
int ncmdshow)
假設把檔案包存為test.c.
3.vs2005建立的工程預設是支援unicode的,我不用這個,所以在選單中選擇 project->properties, 彈出property pages視窗。在左邊欄中依次選擇:configuration properties->general,然後把右邊欄的character set 改為use multi-byte character set.
4.編譯,出現如下錯誤:
msvcrtd.lib(crtexe.obj) : error lnk2019: unresolved external symbol _main referenced in function ___tmaincrtstartup
c:/test/debug/test.exe : fatal error lnk1120: 1 unresolved externals
5.按照上述vs2005中的設定方法進行設定,然後再編譯,錯誤消失了吧!
「error prj0003 : 生成 cmd.exe 時出錯」 完整解決方案
這個是英文版本的(下面的是中文版本的)
tools=> options => projects and solutions -> vc++ directories page
then place below rows:
$(systemroot)/system32
$(systemroot)
$(systemroot)/system32/wbem
中文版本
確定所謂的「工具」-〉「選項」-> "vc++專案設定"->"解決方案資源管理器模式"裡的「顯示所有檔案」有沒有勾選,只要勾上就會有「專案和解決方案」的選項,在vc++目錄下逐行新增
$(systemroot)/system32
$(systemroot)
$(systemroot)/system32/wbem
就ok了。
VC程式設計經驗彙總 一
1.視窗最大化 最小化的實現 當我們不能用標題欄的最大化 最小化及恢復按鈕而又需在其他的地方實現這些功能,可以在指定的訊息處理函式裡新增 windowplacement wndpl windowplacement pwndpl pwndpl wndpl getwindowplacement pwnd...
VC程式設計經驗彙總 二
6.如何建立可伸縮的對話方塊 在進行對話方塊的設計時,有時候我們需要設計可伸縮的對話方塊,當使用者按下某個按鈕時彈出或隱藏對話方塊的下半部分。1 首先在對話方塊中建立乙個控制項把 id設為 idc divider type 設定為矩形,color 設定為黑色,並將其設定為一線狀,拖放在適當的位置做為...
VC程式設計經驗彙總 一
1.視窗最大化 最小化的實現 當我們不能用標題欄的最大化 最小化及恢復按鈕而又需在其他的地方實現這些功能,可以在指定的訊息處理函式裡新增 windowplacement wndpl windowplacement pwndpl pwndpl wndpl getwindowplacement pwnd...