Kri*_*son 7 atl visual-studio-2010 visual-studio
我们有一个DLL项目,它已经存在很长时间了(可能早在Visual Studio 6中),它已针对每个新版本的VS进行了更新.该项目包含使用ATL实现的多个COM类.
升级到VS 2010后,该项目仍然很好.但是,如果我尝试右键单击该项目并选择Add - > Class ... - > ATL Simple Object,我会得到一个错误框,上面写着:
ATL类只能添加到MFC EXE和MFC常规DLL项目或具有完全ATL支持的项目.
这在VS 2008中有效.
当我查看项目属性时,使用MFC设置为使用标准Windows库,并且使用ATL设置为不使用ATL.我将这些更改为分别在共享DLL和动态链接中使用MFC,但仍然得到相同的错误.
我知道如何在不使用向导的情况下添加新的ATL对象,我可以尝试使用VS 2010从头开始重新创建项目以使其快乐.但有没有人知道任何简单的方法来让VS允许我使用ATL简单对象向导与一个项目,它不能识别为"具有完全ATL支持"的项目?
检查这个帖子.
似乎添加此片段信息您的ATL C++代码使其工作.您不需要实际构建项目,只需在完成向导后移除这些东西(前提是该解决方案适合您).
// Added fake code begins here
class CAppModule :
public CComModule
{
};
// Added fake code ends here, below is regular ATL project stuff
CAppModule _Module;
Run Code Online (Sandbox Code Playgroud)
这是所有来自的地方,在$(VisualStudio)\VC\VCWizards\1033\common.js:
/******************************************************************************
Description: Returns a boolean indicating whether project is ATL-based.
oProj: Project object
******************************************************************************/
function IsATLProject(oProj)
{
try
{
var oCM = oProj.CodeModel;
oCM.Synchronize();
// look for global variable derived from CAtlModuleT
var oVariables = oCM.Variables;
for (var nCntr = 1; nCntr <= oVariables.Count; nCntr++)
{
var oVariable = oVariables(nCntr);
var strTypeString = oVariable.TypeString;
if (strTypeString == "ATL::CComModule" || strTypeString == "ATL::CAutoThreadModule")
{
return true;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3828 次 |
| 最近记录: |