8得票3回答
三元条件运算符"?:"和函数头中的LPCTSTR

也许有人可以为我解释一下: bool Func1(LPCTSTR sData) { if (sData) { ... } } 我这样调用了该函数: CString str = _T(""); Func1((str.IsEmpty() ? NULL : str)); 为什么函...

7得票3回答
基于ATL的链接器错误

我最近遇到了一个与atls.lib相关的链接问题。我使用以下代码更新我的链接器附加依赖项行: comctl32.lib C:\WinDDK\7600.16385.1\lib\ATL\i386\atls.lib C:\WinDDK\7600.16385.1\lib\ATL\i386\atl.l...

7得票1回答
错误C4839:将类“ATL :: CW2AEX <520>”非标准用法作为可变参数函数的参数

我在项目中使用Curl,但我的函数返回一个关于CW2AEX的错误。 const TCHAR* path; const TCHAR* fileName; TCHAR url[ MAX_PATH ] = { 0 }; _stprintf( url, _T( "...

7得票3回答
在Windows服务中使用MFC?

我开始开发一个Windows服务。我想使用自己的一些类,这些类与MFC类(如CString、CSocket、CArchive、CMemFile和CObject)有很少的依赖关系。 MSDN说你需要非常小心地选择在Windows服务中使用的MFC部分,但没有具体说明,并且也没有描述可能出现的问题...

7得票2回答
CComBSTR的内存泄漏问题

我看到以下代码会导致内存泄漏,但不明白为什么会这样。 CComBSTR str; pFoo-&gt;get_Bar(&amp;str); pFoo-&gt;get_Baf(&amp;str); 当我们没有分配任何东西时,它是如何导致泄漏的?

7得票1回答
CComObject::CreateInstance创建的COM对象在指针超出作用域时未被销毁

使用智能指针CComObject,通过调用其静态方法CreateInstance来创建COM对象。但是当我离开我的程序时(至少在VS13中),该对象仍然在运行。以下是我的代码: CComObject&lt; CMyAtlObject &gt; * myAtlCOMObject = NULL;...

7得票2回答
如何将“ATL Simple Object”添加到升级为VS 2010的旧ATL DLL项目中?

我们有一个DLL项目已经存在很长时间(可能可以追溯到Visual Studio 6),并且已经针对每个新版本的VS进行了更新。该项目包含使用ATL实现的多个COM类。 升级到VS 2010后,该项目仍然可以正常构建。但是,如果我尝试右键单击该项目,然后选择“添加”->“类...”->“ATL...

7得票1回答
如何生成一个64位的COM代理

我有一个32位COM服务器(以及其源代码),源代码生成服务器和32位代理存根。(MIDL编译器生成代理存根代码。) 我想制作一个64位代理,以便64位程序可以与我的32位COM服务器通信。 如何将32位代理转换为64位代理,使其能够与32位进程通信? 我猜只是重新编译使用/D:_M_AMD...

7得票3回答
如何将ANSI字节转换为Unicode字符串?

我有一个代表字符串中字符的vector&lt;BYTE&gt;。我想将这些字符解释为ASCII字符,并将它们存储在Unicode (UTF-16)字符串中。当前代码假定vector&lt;BYTE&gt;中的字符是Unicode而不是ASCII,对于标准ASCII来说,这样做没问题,但对于扩展...