linker error with ICL6.01/VC6.0

linker error with ICL6.01/VC6.0

Hi to all, we are currently evaluating ICL 6.0 on a very large VC6.0 project. while ICL has no problem compiling, it shows "error LNK2001: unresolved external" when linking: it does not find some CArray methods, which are anyway unused (i.e. the CArray is used for plain storage)

(I edited the message a bit: C1,C2,C3 are plain structures)

alc.obj : symbol "public: virtual __thiscall CArray::~CArray(void)"
ptf.obj : symbol "public: virtual __thiscall CArray::~CArray(void)"
alc.obj : symbol "public: virtual __thiscall CArray::~CArray(void)"
ptf.obj : symbol "public: virtual __thiscall CArray::~CArray(void)"
alc.obj : symbol "public: virtual __thiscall CArray::~CArray(void)"
ptf.obj : symbol "public: virtual __thiscall CArray::~CArray(void)"
alc.obj : symbol "public: virtual void __thiscall CArray::Serialize(CArchive &)"
ptf.obj : symbol "public: virtual void __thiscall CArray::Serialize(CArchive &)"
alc.obj : symbol "public: virtual void __thiscall CArray::AssertValid(void)const "
ptf.obj : symbol "public: virtual void __thiscall CArray::AssertValid(void)const "
alc.obj : symbol "public: virtual void __thiscall CArray::Dump(CDumpContext &)const "
ptf.obj : symbol "public: virtual void __thiscall CArray::Dump(CDumpContext &)const "
alc.obj : symbol "public: virtual void __thiscall CArray::Serialize(CArchive &)"
ptf.obj : symbol "public: virtual void __thiscall CArray::Serialize(CArchive &)"
alc.obj : symbol "public: virtual void __thiscall CArray::AssertValid(void)const "
ptf.obj : symbol "public: virtual void __thiscall CArray::AssertValid(void)const "
alc.obj : symbol "public: virtual void __thiscall CArray::Dump(CDumpContext &)const "
ptf.obj : symbol "public: virtual void __thiscall CArray::Dump(CDumpContext &)const "
alc.obj : symbol "public: virtual void __thiscall CArray::Serialize(CArchive &)"
ptf.obj : symbol "public: virtual void __thiscall CArray::Serialize(CArchive &)"
alc.obj : symbol "public: virtual void __thiscall CArray::AssertValid(void)const "
ptf.obj : symbol "public: virtual void __thiscall CArray::AssertValid(void)const "
alc.obj : symbol "public: virtual void __thiscall CArray::Dump(CDumpContext &)const "
ptf.obj : symbol "public: virtual void __thiscall CArray::Dump(CDumpContext &)const "

fatal error LNK1120: 12 unresolved externals

alc.cpp includes ptf.h and alc.h (in this order).
Now, we don't know if that's just an include problem (i.e. something we can solve changing some include directives), or a compiler error. Can anybody help?

3 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

If the code compiles with Visual C++ than we have an issue we need to understand. Have you tried VC?
If so and the answer is yes, can you roll up a test case and provide it via Quad.

Also, have you tried the Intel 7.0 compiler?

Max

The code compiles and links fine under VC6.0 sp5.
We didn't try ICL7, since we had a trial of ICL6 (I think it's 6.01) on a cd here.

I'm sorry I can't strip a source file to reproduce the bug, since the project is huge.
Moreover the source files are not really standard-conforming: I'd say the #include statements are so oddly placed, I'm more surprised from VC success than from ICL failure.

Basically I guess the problem is a .h file which declares a struct containing some CArray members, but which does not directly include .

I'll post again if I have time to distill a single source file.

Leave a Comment

Please sign in to add a comment. Not a member? Join today