November 23, 2007 Pantheios 1.0.1-beta58 and CComBSTR, comstl::bstr compilation failures on VC8 (with stlsoft 1.9.9) | ||||
---|---|---|---|---|
| ||||
Dear Matthew, I'm having issues attempting to use CComBSTR or the comstl::bstr facade with pantheios. It appears that the string shims for CComBSTR or comstl::bstr are not being picked up by the pantheios library. I've produced a very simple test case below to demonstrate and the stdafx.h header and build log follow: I've had a look at the source and it appears that the string shims for the CComBSTR should be being picked up by the compiler but as you can see from the build log they are not. A similar problem appears when trying to use comstl::bstr class. I honestly don't know if this is an error in my header imports, an error in the stlsoft headers or a compiler bug so I hope you can shed some light. btw - I've been a user of the stlsoft libraries for several years now and all I can say is: fantastic work! Thanks, Best Regards, Brett Delle Grazie -- unittest.cpp -- #include "stdafx.h" #include <pantheios/pantheios.hpp> int _tmain(int argc, _TCHAR* argv[]) { CComBSTR aString( _T("Test String") ); pantheios::log_INFORMATIONAL( aString ); return 0; } ------------------------ -- stdafx.h -- // stdafx.h : include file for standard system include files, // or project specific include files that are used frequently, but // are changed infrequently // #pragma once // Modify the following defines if you have to target a platform prior to the ones specified below. // Refer to MSDN for the latest info on corresponding values for different platforms. #ifndef WINVER // Allow use of features specific to Windows XP or later. #define WINVER 0x0501 // Change this to the appropriate value to target other versions of Windows. #endif #ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later. #define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows. #endif #ifndef _WIN32_WINDOWS // Allow use of features specific to Windows 98 or later. #define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later. #endif #ifndef _WIN32_IE // Allow use of features specific to IE 6.0 or later. #define _WIN32_IE 0x0600 // Change this to the appropriate value to target other versions of IE. #endif // Don't warn on use of old insecure string copy variants. #define _CRT_SECURE_NO_WARNINGS 1 // Overload and automatically call secure versions of string copy variants. #define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1 #define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT 1 #include <stdio.h> #include <tchar.h> #include <pantheios/implicit_link/core.h> #include <pantheios/implicit_link/fe.simple.h> #include <pantheios/implicit_link/be.WindowsDebugger.h> #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit #include <atlbase.h> #include <atlstr.h> // TODO: reference additional headers your program requires here ----------------------------------------------------------- -- Build Log -- 1>------ Rebuild All started: Project: unittest, Configuration: Debug Win32 ------ 1>Deleting intermediate and output files for project 'unittest', configuration 'Debug|Win32' 1>Compiling... 1>stdafx.cpp 1>Implicit linking to Pantheios libraries: (pantheios.1.$(XXXX).vc8.dll.debug.lib) 1> pantheios.1.core.vc8.dll.debug.lib 1> pantheios.1.fe.simple.vc8.dll.debug.lib 1> pantheios.1.bec.WindowsDebugger.vc8.dll.debug.lib 1> pantheios.1.be.WindowsDebugger.vc8.dll.debug.lib 1>Compiling... 1>unittest.cpp 1>c:\projects\extlibs\stlsoft-1.9.9\include\winstl\window\functions.h(213) : warning C4312: 'reinterpret_cast' : conversion from 'LONG' to 'HINSTANCE' of greater size 1>c:\projects\extlibs\stlsoft-1.9.9\include\winstl\window\functions.h(365) : warning C4244: 'argument' : conversion from 'LRESULT' to 'const long', possible loss of data 1>c:\projects\pantheios-1.0.1-beta58\include\pantheios\internal\generated\log_sev_functions.hpp(7230) : error C2665: 'stlsoft::winstl_project::c_str_len_a' : none of the 17 overloads could convert all the argument types 1> c:\projects\pantheios-1.0.1-beta58\include\pantheios\pantheios.h(775): could be 'size_t pantheios::c_str_len_a(const pantheios::pan_slice_t &)' 1> c:\projects\pantheios-1.0.1-beta58\include\pantheios\pantheios.h(822): or 'size_t pantheios::c_str_len_a(const pantheios::pan_slice_t *)' 1> c:\projects\pantheios-1.0.1-beta58\include\pantheios\pantheios.h(849): or 'size_t pantheios::c_str_len_a(pantheios::pan_severity_t)' 1> c:\projects\extlibs\stlsoft-1.9.9\include\stlsoft\shims\access\string\fwd.h(100): or 'stlsoft::ss_size_t stlsoft::c_str_len_a(const stlsoft::ss_char_a_t *)' 1> c:\projects\extlibs\stlsoft-1.9.9\include\stlsoft\shims\access\string\std\exception.hpp(128): or 'stlsoft::ss_size_t stlsoft::c_str_len_a(const std::exception &)' 1> c:\projects\extlibs\stlsoft-1.9.9\include\stlsoft\shims\access\string\std\basic_string.hpp(392): or 'stlsoft::ss_size_t stlsoft::c_str_len_a(const std::string &)' 1> c:\projects\extlibs\stlsoft-1.9.9\include\stlsoft\shims\access\string\std\time.hpp(131): or 'stlsoft::ss_size_t stlsoft::c_str_len_a(const tm *)' 1> c:\projects\extlibs\stlsoft-1.9.9\include\stlsoft\shims\access\string\std\time.hpp(242): or 'stlsoft::ss_size_t stlsoft::c_str_len_a(const tm &)' 1> c:\projects\extlibs\stlsoft-1.9.9\include\comstl\shims\access\string\guid.hpp(300): or 'stlsoft::comstl_project::cs_size_t stlsoft::comstl_project::c_str_len_a(const GUID &)' 1> c:\projects\extlibs\stlsoft-1.9.9\include\comstl\shims\access\string\variant.hpp(592): or 'stlsoft::comstl_project::cs_size_t stlsoft::comstl_project::c_str_len_a(const VARIANT &)' 1> c:\projects\extlibs\stlsoft-1.9.9\include\winstl\shims\access\string\hwnd.hpp(541): or 'stlsoft::winstl_project::ws_size_t stlsoft::winstl_project::c_str_len_a(HWND)' 1> c:\projects\extlibs\stlsoft-1.9.9\include\winstl\shims\access\string\time.hpp(553): or 'stlsoft::winstl_project::ws_size_t stlsoft::winstl_project::c_str_len_a(const SYSTEMTIME &)' 1> c:\projects\extlibs\stlsoft-1.9.9\include\winstl\shims\access\string\time.hpp(600): or 'stlsoft::winstl_project::ws_size_t stlsoft::winstl_project::c_str_len_a(const FILETIME &)' 1> c:\projects\extlibs\stlsoft-1.9.9\include\winstl\shims\access\string\time.hpp(633): or 'stlsoft::winstl_project::ws_size_t stlsoft::winstl_project::c_str_len_a(const UDATE &)' 1> while trying to match the argument list '(const ATL::CComBSTR)' 1> c:\projects\remedyhelper\unittest\unittest.cpp(12) : see reference to function template instantiation 'int pantheios::log_INFORMATIONAL<ATL::CComBSTR>(const T0 &)' being compiled 1> with 1> [ 1> T0=ATL::CComBSTR 1> ] 1>c:\projects\pantheios-1.0.1-beta58\include\pantheios\internal\generated\log_sev_functions.hpp(7230) : error C2665: 'stlsoft::winstl_project::c_str_data_a' : none of the 17 overloads could convert all the argument types 1> c:\projects\pantheios-1.0.1-beta58\include\pantheios\pantheios.h(764): could be 'const char *pantheios::c_str_data_a(const pantheios::pan_slice_t &)' 1> c:\projects\pantheios-1.0.1-beta58\include\pantheios\pantheios.h(811): or 'const char *pantheios::c_str_data_a(const pantheios::pan_slice_t *)' 1> c:\projects\pantheios-1.0.1-beta58\include\pantheios\pantheios.h(838): or 'const char *pantheios::c_str_data_a(pantheios::pan_severity_t)' 1> c:\projects\extlibs\stlsoft-1.9.9\include\stlsoft\shims\access\string\fwd.h(93): or 'const stlsoft::ss_char_a_t *stlsoft::c_str_data_a(const stlsoft::ss_char_a_t *)' 1> c:\projects\extlibs\stlsoft-1.9.9\include\stlsoft\shims\access\string\std\exception.hpp(97): or 'const stlsoft::ss_char_a_t *stlsoft::c_str_data_a(const std::exception &)' 1> c:\projects\extlibs\stlsoft-1.9.9\include\stlsoft\shims\access\string\std\basic_string.hpp(226): or 'const stlsoft::ss_char_a_t *stlsoft::c_str_data_a(const std::string &)' 1> c:\projects\extlibs\stlsoft-1.9.9\include\stlsoft\shims\access\string\std\time.hpp(96): or 'stlsoft::basic_shim_string<C> stlsoft::c_str_data_a(const tm *)' 1> with 1> [ 1> C=stlsoft::ss_char_a_t 1> ] 1> c:\projects\extlibs\stlsoft-1.9.9\include\stlsoft\shims\access\string\std\time.hpp(229): or 'stlsoft::basic_shim_string<C> stlsoft::c_str_data_a(const tm &)' 1> with 1> [ 1> C=stlsoft::ss_char_a_t 1> ] 1> c:\projects\extlibs\stlsoft-1.9.9\include\comstl\shims\access\string\guid.hpp(258): or 'stlsoft::comstl_project::c_str_ptr_GUID_proxy<C> stlsoft::comstl_project::c_str_data_a(const GUID &)' 1> with 1> [ 1> C=stlsoft::comstl_project::cs_char_a_t 1> ] 1> c:\projects\extlibs\stlsoft-1.9.9\include\comstl\shims\access\string\variant.hpp(482): or 'stlsoft::comstl_project::c_str_VARIANT_proxy_a stlsoft::comstl_project::c_str_data_a(const VARIANT &)' 1> c:\projects\extlibs\stlsoft-1.9.9\include\winstl\shims\access\string\hwnd.hpp(509): or 'stlsoft::winstl_project::c_str_ptr_HWND_proxy<C> stlsoft::winstl_project::c_str_data_a(HWND)' 1> with 1> [ 1> C=stlsoft::winstl_project::ws_char_a_t 1> ] 1> c:\projects\extlibs\stlsoft-1.9.9\include\winstl\shims\access\string\time.hpp(330): or 'stlsoft::basic_shim_string<C> stlsoft::winstl_project::c_str_data_a(const SYSTEMTIME &)' 1> with 1> [ 1> C=stlsoft::ss_char_a_t 1> ] 1> c:\projects\extlibs\stlsoft-1.9.9\include\winstl\shims\access\string\time.hpp(364): or 'stlsoft::basic_shim_string<C> stlsoft::winstl_project::c_str_data_a(const FILETIME &)' 1> with 1> [ 1> C=stlsoft::ss_char_a_t 1> ] 1> c:\projects\extlibs\stlsoft-1.9.9\include\winstl\shims\access\string\time.hpp(396): or 'stlsoft::basic_shim_string<C> stlsoft::winstl_project::c_str_data_a(const UDATE &)' 1> with 1> [ 1> C=stlsoft::ss_char_a_t 1> ] 1> while trying to match the argument list '(const ATL::CComBSTR)' 1>Build log was saved at "file://c:\projects\RemedyHelper\unittest\Debug\BuildLog.htm" 1>unittest - 2 error(s), 2 warning(s) ========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ========== |
November 23, 2007 Re: Pantheios 1.0.1-beta58 and CComBSTR, comstl::bstr compilation failures on VC8 (with stlsoft 1.9.9) | ||||
---|---|---|---|---|
| ||||
Posted in reply to Brett Delle Grazie | "Brett Delle Grazie" <brett.dellegrazie@uk.logicalis.com> wrote in message news:fi6ikf$28e5$1@digitalmars.com... > Dear Matthew, > > I'm having issues attempting to use CComBSTR or the comstl::bstr facade with > pantheios. It appears that the string shims for CComBSTR or comstl::bstr > are not being picked up by > the pantheios library. I've produced a very simple test case below to > demonstrate and the stdafx.h header and build log follow: > > I've had a look at the source and it appears that the string shims for the > CComBSTR should be being picked up by the compiler but as you can see from > the build log they are not. > A similar problem appears when trying to use comstl::bstr class. > > I honestly don't know if this is an error in my header imports, an error in > the stlsoft headers or a compiler bug so I hope you can shed some light. Ah, the answer here is very simple. Pantheios currently only supports multibyte strings. I've just updated the Pantheios roadmap, and have posted it on this newsgroup. I am hoping to get 1.0 final release before the end of the year, and 1.1 (with Unicode support) in mid/late January. For the moment, you'll just have to do a conversion, or use multibyte source code. ;-( > btw - I've been a user of the stlsoft libraries for several years now and all I can say is: fantastic work! Thanks! I might quote you on the re-vamping website. :-) Please feel free to respond on the other thread with any requests you have for 1.10. Cheers Matt |
Copyright © 1999-2021 by the D Language Foundation