c++ - 使用 VS Express 时在控制台应用程序中使用 CString

标签 c++ atl wtl

我在尝试使用 CString 时遇到问题。

我有一个使用 VS2010Express 编写的控制台应用程序。我有一段代码我想使用,但它使用 CString。当我尝试包含适当的 header atlstr.h(据我所知)时,我得到了著名的错误:无法打开源文件。 在浏览了一段时间之后,似乎一般来说应该是可能的,但是 atlstr.h 对 Express 用户不可用。 问题:

1) 是这样吗? 2) 我能以某种方式避免这个问题吗?

下面是代码,(来源:http://www.cprogramming.com/tutorial/ado_c++_wrapper_classes.html)

如果有人知道如何继续使用此代码,无论是否使用 CString,请帮帮我....

#import "C:\Program\Delade filer\System\ado\msado15.dll" rename ("EOF","adoEOF")       no_namespace


#include <atlstr.h>


class CADOConnection
{   private:

    _ConnectionPtr pConnection;
    CString m_szConnectionString;

    BOOL Initialize();


public:

    void SetConnectionString(CString& szConnectionString);
    TCHAR *GetConnectionString(){return m_szConnectionString);

    BOOL IsClosed();
    BOOL IsOpen();
    BOOL Open();
    BOOL Open(CString& szConnectionString, CString szUser=_T(""), CString   szPassword=_T(""));
    BOOL Close();

    CADOConnection(CString& szConnectionString);
    CADOConnection(void);
    ~CADOConnection(void);
};

谢谢,复活节快乐!

最佳答案

是的,它是正确的(CString 实际上是现在结合的 MFC 和 ATL 的一部分)。

在几乎所有情况下,我发现在其他字符串类(想到 std::string)中转换 CString 的使用是微不足道的

不过,我不太确定 VSExpress 是否完全支持导入类型库 (#import)。可能是——因为 COM 是一个二进制标准,而 MIDL 可以生成纯 C 头文件……但仍然 :)

关于c++ - 使用 VS Express 时在控制台应用程序中使用 CString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5760186/

相关文章:

C++ WTL8.1 如何在消息循环的新线程中创建窗口?

c++ - std::map 和 std::set 是线程安全的吗?

c++ - 如何将 Eigen 矩阵和 vector 类型转换为 Apple 的 simd 类型以传递给 GPU?

regex - CAtlRegExp 用于最多匹配 4 个字符的正则表达式

activex - 是否有 MsStkPrp.dll 的 x64 版本

visual-studio - 如何在VS 2010中安装WTL 8.0项目向导?

C++ 和 DirectShow

c++ - 可观察容器

c# - 开发 Internet Explorer、浏览器帮助对象扩展?

c++ - 将 atltime header 包含到 WTL 项目时出错