gpt4 book ai didi

visual-studio - 如何将 "ATL Simple Object"添加到升级到 VS 2010 的旧 ATL DLL 项目?

转载 作者:行者123 更新时间:2023-12-04 02:37:26 26 4
gpt4 key购买 nike

我们有一个已经存在很长时间(可能早在 Visual Studio 6)的 DLL 项目,它已针对 VS 的每个新版本进行了更新。该项目包含许多使用 ATL 实现的 COM 类。

升级到 VS 2010 后,该项目仍然可以正常构建。但是,如果我尝试右键单击该项目并选择 添加 -> 类... -> ATL 简单对象 ,我收到一个错误框,上面写着:

ATL classes can only be added to MFC EXE and MFC Regular DLL projects or projects with full ATL support.



这在 VS 2008 中有效。

当我查看项目属性时,使用 MFC 设置为 使用标准 Windows 库 和 ATL 的使用设置为 不使用 ATL .我将这些更改为 在共享 DLL 中使用 MFC 到 ATL 的动态链接 分别,但仍然得到相同的错误。

我知道如何在不使用向导的情况下添加新的 ATL 对象,并且我可以尝试使用 VS 2010 从头开始​​重新创建项目以使其满意。但是有没有人知道让 VS 允许我将 ATL 简单对象向导与它不识别为“具有完全 ATL 支持”的项目的项目一起使用的简单方法?

最佳答案

查询 this thread out .

似乎添加此片段信息您的 ATL C++ 代码使其工作。您不需要实际构建项目,只需在完成向导后删除这些内容(前提是该解决方案适合您)。

// Added fake code begins here

class CAppModule :
public CComModule
{
};

// Added fake code ends here, below is regular ATL project stuff

CAppModule _Module;

这就是这一切的来源,在 $(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;
}

关于visual-studio - 如何将 "ATL Simple Object"添加到升级到 VS 2010 的旧 ATL DLL 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8594856/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com