Does Qt 4.8.5 compile with VC11 (VS2012)?
-
I have downloaded the new Qt 4.8.5 RC2. Does this successfully compile with VC11 on 64 bit Win7?
-
Haven't tried 4.8.5 yet (but nice to see there is still somebody working on 4.8 maintenance!), but 4.8.4 compiled nice for me with VS2012. Unless there is a serious regression in 4.8.5, it should compile too, I guess...
-
I am getting a compile errro in YArrJit.cpp with the include file hashset.h.
YarrJIT.cpp
.\wtf/HashSet.h(180) : error C2664: 'std::pair<_Ty1,_Ty2>::pair(const std::pair<
_Ty1,_Ty2> &)' : cannot convert parameter 1 from 'std::pair<_Ty1,_Ty2>' to 'cons
t std::pair<_Ty1,_Ty2> &'
with
[
_Ty1=WTF::HashTableConstIteratorAdapter<WTF::HashTable<void *,void *
,WTF::IdentityExtractor<void *>,WTF::PtrHash<void *>,WTF::HashTraits<void *>,WTF
::HashTraits<void *>>,void *>,
_Ty2=bool
]
and
[
_Ty1=WTF::HashTableIterator<void *,void *,WTF::IdentityExtractor<voi
d *>,WTF::PtrHash<void *>,WTF::HashTraits<void *>,WTF::HashTraits<void *>>,
_Ty2=bool
]
and
[
_Ty1=WTF::HashTableConstIteratorAdapter<WTF::HashTable<void *,void *
,WTF::IdentityExtractor<void *>,WTF::PtrHash<void *>,WTF::HashTraits<void *>,WTF
::HashTraits<void *>>,void *>,
_Ty2=bool
]
Reason: cannot convert from 'std::pair<_Ty1,Ty2>' to 'const std::pair<
Ty1,_Ty2>'
with
[
_Ty1=WTF::HashTableIterator<void *,void *,WTF::IdentityExtractor<voi
d *>,WTF::PtrHash<void *>,WTF::HashTraits<void *>,WTF::HashTraits<void *>>,
_Ty2=bool
]
and
[
_Ty1=WTF::HashTableConstIteratorAdapter<WTF::HashTable<void *,void *
,WTF::IdentityExtractor<void *>,WTF::PtrHash<void *>,WTF::HashTraits<void *>,WTF
::HashTraits<void *>>,void *>,
_Ty2=bool
]
No user-defined-conversion operator available that can perform this conv
ersion, or the operator cannot be called
.\wtf/HashSet.h(179) : while compiling class template member function 's
td::pair<_Ty1,_Ty2> WTF::HashSet<ValueArg>::add(void *const &)'
with
[
_Ty1=WTF::HashTableConstIteratorAdapter<WTF::HashTable<void *,void *
,WTF::IdentityExtractor<void *>,WTF::PtrHash<void *>,WTF::HashTraits<void *>,WTF
::HashTraits<void *>>,void *>,
_Ty2=bool,
ValueArg=void *
]
c:\users\heinz\qt\4.8.5\src\3rdparty\webkit\source\javascriptcore\heap\M
arkStack.h(74) : see reference to function template instantiation 'std::pair<_Ty
1,_Ty2> WTF::HashSet<ValueArg>::add(void *const &)' being compiled
with
[
_Ty1=WTF::HashTableConstIteratorAdapter<WTF::HashTable<void *,void *
,WTF::IdentityExtractor<void *>,WTF::PtrHash<void *>,WTF::HashTraits<void *>,WTF
::HashTraits<void *>>,void *>,
_Ty2=bool,
ValueArg=void *
]
c:\users\heinz\qt\4.8.5\src\3rdparty\webkit\source\javascriptcore\heap\M
arkStack.h(195) : see reference to class template instantiation 'WTF::HashSet<Va
lueArg>' being compiled
with
[
ValueArg=void *
]
Generating Code...
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 11.0
\VC\BIN\cl.EXE"' : return code '0x2'
Stop.
I file a bug on this. -
Well, here is my attempt to build Qt 4.8.5 (RC-1) with VS2012:
http://tinyurl.com/qt485rc1Note that this is a static build, so you need to define QT_NO_DLL.
-
Link should be fixed now. Sorry.
(Note: This forum scrambled the URL by replacing "x" with a \times character)
-
Update
The error you were getting is related to Webkit and VS2012. I didn't encounter this issue before, since I usually do static builds that have Webkit disabled anyway. But for shared builds, simply add "-no-webkit" when you run configure.exe. If you really need Webkit, there is a patch on the bugtracker...
-
you may also find this "link":http://stackoverflow.com/a/13085842 interesting.
-
Hi,
If you wanna build with webkit, you should patch the HashSet.h file with the following:
START DIFF PATCH
diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/HashSet.h b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/HashSet.h
index 82245f3..7298558 100644
--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/HashSet.h
+++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/HashSet.h
@@ -92,6 +92,17 @@ namespace WTF {
friend void deleteAllValues<>(const HashSet&);
friend void fastDeleteAllValues<>(const HashSet&);-
// msvc2012 has trouble constructing a HashTableConstIteratorAdapter from a HashTableIterator
-
// despite the existence of a const_iterator cast method on the latter class.
-
pair<iterator, bool> iterator_const_cast(const pair<typename HashTableType::iterator, bool>& p)
-
{
-
// Spell out the full conversion chain for clarity, although any of the "hint"
-
// given by the alternatives below would have been enough.
-
return make_pair(iterator(HashTableType::const_iterator(p.first)), p.second);
-
// return make_pair(iterator(p.first), p.second);
-
// return make_pair(HashTableType::const_iterator(p.first), p.second);
-
}
-
};HashTableType m_impl;
@@ -177,7 +188,7 @@ namespace WTF {
template<typename T, typename U, typename V>
inline pair<typename HashSet<T, U, V>::iterator, bool> HashSet<T, U, V>::add(const ValueType& value)
{-
return m_impl.add(value);
-
return iterator_const_cast(m_impl.add(value));
}
template<typename Value, typename HashFunctions, typename Traits>
@@ -186,7 +197,7 @@ namespace WTF {
HashSet<Value, HashFunctions, Traits>::add(const T& value)
{
typedef HashSetTranslatorAdapter<ValueType, ValueTraits, T, HashTranslator> Adapter;
-
return m_impl.template addPassingHashCode<T, T, Adapter>(value, value);
-
return iterator_const_cast(m_impl.template addPassingHashCode<T, T, Adapter>(value, value));
}
template<typename T, typename U, typename V>
END DIFF PATCH
I actually thought the patch was gonna be released on 4.8.5, but it wasn't, I still will create a new post mentioning this to see why this fix wasn't released.
BTW: I didn't encase this in code markup because it gets all messed up because I couldn't escape the AT sign correctly, just copy paste the code above and remove the \ from every @
-
-
Humm, this is interesting.