- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在编写一个 .NET 分析器(一个 DLL)并且我正在使用 ATL。我想将一些使用 MFC 的类添加到我的项目中,但是我遇到了很多错误,但是这些类在 MFC 项目中运行良好。我尝试更改项目属性并设置 Use of MFC = Use MFC in a shared DLL
但它不起作用,我还尝试包括“afx.h”...
以下是我遇到的一些错误:
Error 214 error C2373: 'CString' : redefinition; different type modifiers iaparameters.cpp 31
Error 206 error C2653: 'CIAParameters' : is not a class or namespace name iaparameters.cpp 30
如有任何帮助,我们将不胜感激。
最佳答案
Baislcy 这应该是可能的,关于 this question .但根据我自己的经验,这样做有点棘手。您必须手动包含所用版本的 MFC header 。您也可以自定义您的 CWinApp
类以启用 MFC 类工厂(this is 为您生成的默认 MFC 支持。另外 this 可能有帮助)。
您还应该注意,对于 ATL 8,最重要的 MFC 和 ATL 类现在是 shared between both libraries .
如果这不起作用,最简单的方法是重新创建项目,选中MFC 支持 选项并重新导入您的代码。这就是我最终这样做的方式。
最后但同样重要的是,您还应该注意 ATL Internals指出您应该只在真正需要时才使用 MFC。如今,几乎所有强大的 MFC 助手也是 ATL 的一部分。这是书中的引述。前两个原因对 ATL 来说是一个很大的优势,最后一个更像是一个笑话:
- I can't live without
CString
(orCMap
,CList
, and so on) The MFC utility classes were built as a stopgap until the C++ standards committee defined a standard library. They've done it, so we can stop using the MFC versions. The classesstring
,map
,list
, and so on provided in the standard library are more flexible and more robust than their MFC equivalents. Moreover,CString
is now a shared class between MFC and ATL, and thus is available in ATL projects without having to include the rest of MFC and link to the MFC library. Other MFC utility classes have also been made shared, includingCPoint
andCRect
. And for those who liked the MFC collections classes, ATL now includes MFC style collections (CAtlMap
,CAtlList
, and so on).- I can't live without the wizards. [...] The ATL wizards are arguably as extensive as the ones MFC provides.
- I already know MFC, and I can't learn anything new. [...]
ATL 为 STL 容器和类型提供了良好的支持。您应该考虑使用它们,而不是引用 MFC。
关于c++ - 如何将使用 MFC 的类添加到 ATL 项目中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15472883/
我正在使用 embarcadero C++ XE8 32 位。当我包含以下文件时: #include #include #include #include 我收到以下错误: [bcc32 Fatal
我正在将 VS2008(VC++) 代码迁移到 VS2013。我收到以下错误: error C2664: 'HRESULT _CopyItfFromAdaptItf::copy(T **,ATL::C
我试图在 Visual Studio 2013 上运行这个程序,但是当我包含一个对象 - myparser.obj 时,我收到以下错误: 1>MyParser.obj : error LNK2001:
如何正确转换这种方式? VARIANT varIndex; CString csIndex; //Index BSTR csIndex = (LPCSTR)(_bstr
因此,我正在使用向导在 visual studio 2008 中创建一个 ATL 项目(此处推荐 - How to create ActiveX DLL in Visual C++ - 以及其他地方)
我有一个关于 ATL(C++) VS2010 的项目。我创建了一个对话框类。有两个按钮,想要添加文本框之类的东西。我读到负责此组件 CEdit。 CEdit* pEdit = (CEdit*)GetD
我使用 Visual Studio 2005 向导创建了一个 ATL COM Server C++ 项目。我使用 ATL 简单对象向导添加了一个新的 COM 类。现在,当我尝试从我的服务器(在 ATL
我们有一个已经存在很长时间(可能早在 Visual Studio 6)的 DLL 项目,它已针对 VS 的每个新版本进行了更新。该项目包含许多使用 ATL 实现的 COM 类。 升级到 VS 2010
我有一个使用 ATL 库的 C++ 项目。在 Visual Studio 2012 中,我曾经看到过以下两个文件: 程序文件 (x86)\Microsoft Visual Studio11.0\VC\
我以前从未使用过 COM,并且我的任务是编写一个使用某些第三方 COM 对象的应用程序。如果有人能给我一些关于如何使用它们的好教程,我将不胜感激。更直接的是,我似乎没有安装事件模板库。我在网上搜索过,
我必须创建 BYTE* 数组来为 Http 请求存储一些文本和二进制数据。像这样的东西: Content-Type: multipart/form-data; boundary=Asrf456BGe4
我不熟悉这个,可以使用kick start。 我正在使用 ATL(非托管 C++)用户控件并希望使用 ShockWave ActiveX 对象。我需要知道如何声明它,以便我可以设置属性或调用方法。 例
我使用 ATL 宏,如 A2T 和 A2CW。在开发计算机上一切正常。当我在另一台计算机上使用应用程序 (visual studio 2008 pro) 时 - ATL 宏转换的输出不可读。 我希望有
我正在尝试使用以下方式注册 atl 服务 ExeName.exe/服务 如此处所述:http://msdn.microsoft.com/en-us/library/74y2334x(VS.80).as
任何人都可以帮我找到一个最新的、工作的 ATL 项目,它有一个主窗口和一些组件吗?请看在上帝的份上,不要告诉我使用 WTL/Qt 或其他。我需要 ATL。没有关于它的最新项目。我只需要一个主窗口,仅此
我最近遇到了 atls.lib 的链接问题。我更新了链接器的附加依赖项行: comctl32.lib C:\WinDDK\7600.16385.1\lib\ATL\i386\atls.lib C:\W
ATL::CComModule::RegisterServer(TRUE) 调用究竟做了什么(它写入了哪些注册表项)? 最佳答案 对于每个使用 OBJECT_ENTRY_AUTO 的类宏,它将运行资源
我的硬盘中有 atls.lib,但无法将其链接到我的 Visual Studio 项目中。我知道 atls.lib 是 ATL 特定的库文件,并且我拥有所有 ATL 文件/ header /库。但是,
我正在为一个项目使用 ATL 和 WTL 的组合,并从 CWindowImpl 派生了我自己的类,它看起来像这样: class CMyControl : public CWindowImpl { pu
我正在尝试将XText与EMF的ATL模型结合起来进行模型转换。我正在读取我的 DSL,将其转储到 EMF 的 XMI 资源中,然后将其放入 ATL api 中:ATL 不会给我任何错误并且运行正确:
我是一名优秀的程序员,十分优秀!