unresolved symbols from value.cpp/.h

Christian Ehrlicher Ch.Ehrlicher at gmx.de
Fri Jan 20 17:55:00 GMT 2006


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Maks Orlovich schrieb:
> On Friday 20 January 2006 10:37, Christian Ehrlicher wrote:
> 
>>Hi,
>>
>>While trying to get kj\s compile on windows, I now have some problems
>>with unresolved smybols. It looks like there are a lot of functions not
>>implemented:
> 
> 
> Hi. 
> This chunk is definitely NOT good:
> 
> 
> -    KJS_EXPORT static bool collect();
> +    static bool collect();
> 
> Ditto for this:
> 
> --- internal.h  (revision 500568)
> +++ internal.h  (working copy)
> @@ -403,7 +403,7 @@
>      bool hasInstance(ExecState *exec, ValueImp *value);
>  
>      virtual const ClassInfo *classInfo() const { return &info; }
> -    KJS_EXPORT static const ClassInfo info;
> +    static const ClassInfo info;
Why not? You export the class so there is no need (and msvc produces an
error) to explicit export a function of this exported class.

> 
> 
> Also, IMHO, you shouldn't  do these:
> -  struct ClassInfo {
> +  class ClassInfo {
> +  public:
> 
> but rather fix the uses.
everywhere else in kdelibs it was changed from struct -> class so I did
here too.
> 
> 
>>ValueImp::operator=
>>ValueImp::ValueImp(class KJS::ValueImp const &)
> 
> 
> This is intentional, to prevent accidental copying.
Ok, let's try to explain why this is needed. We had such a problem some
time ago (Thiago Macieira was hard to convince).
Msvc can't export a half implemented class (it doesn't know anything
about weak symbols) - so you've only two options
a) don't export ths class (which seems to be the best solution because
you said it's an internal one)
b) implement all functions
> 
> 
>>also it looks like kxmlcore doesn't export anything but kjs depends on
>>kxmlcore.
> 
> 
> There are no out-of-line symbols there except in debug builds. It probably 
> shouldn't even build a library.
It's only one function and maybe has something to do with
template<typename PairType>
inline typename PairType::first_type extractFirst(const PairType& value)
{
    return value.first;
}
in kxmlcore/HashMap.h - I'll take a look.

btw:
property_slot.cpp isn't defined as source in SConscript (this was one of
my four unresolved symbols I have).

Christian
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFD0SP0HAIuqbOiZ+kRAit9AJ9fYGdBUbxgBuedoYwc9o1fBXLwhwCeMRZn
+jf5UiT/1NV7h5BWuz+5Hfw=
=tuSh
-----END PGP SIGNATURE-----




More information about the kde-core-devel mailing list