在编译ATL连接控件的Debug版本时不会出现问题,但是在Release版本里会出现“error LNK2005”、“warning LNK4006”以及“error LNK2001”错误和警告。这是由于ATL COM AppWizard产生缺省项目时,在所有Release版本的设置中定义宏_ATL_MIN_CRT。定义此宏可以不必将并不需要的C Run-Time库引入代码中。但是很多时候需要C Run-Time库,这是应该去掉_ATL_MIN_CRT宏。
方法如下:在“Project”菜单中选择“Setting”命令。弹出的“Project Setting”对话框的“Setting For:”下拉列表框中,选择“Multiple Configurations”。会弹出“Selectproject configuration(s) to modify”对话框,在对话框中选中所有4个Release版本的复选框,然后点击“OK”按钮。
接着在“Project Setting”对话框中选中“C/C++”选项卡,然后选择“General”类型,在“Preprocessordefinitions”编辑框中去掉_ATL_MIN_CRT,单击“OK”按钮即可。
在MinDependency版本中还是可能出现“error C2872: 'ATL' : ambiguous symbol”的错误,只要继续去掉“_ATL_STATIC_REGISTRY”即可。