Solved

compiling templates with xlC

Posted on 2004-04-13
4
257 Views
Last Modified: 2012-06-21
Hi everyone,
    Recently I wrote a piece of software that was compiled with the sun CC compiler.  I now need to recompile the software for another system that uses the xlC compiler.  The software seems to compile correctly with xlC but then when it tries to link together the different files I am getting an error.  I did not get any errors when compiling on the Sun.  The error I am getting is:
Undefined Symbol .foo<double>::~foo()

where foo would be the name of a template class that I had created and double would be the type that it is trying to be set to be used as.  
I am getting one Undefined Symbol error for each function in the template and for each type it is being used as.

I am wondering if anyone else has had any trouble linking templates with xlC and if there are any parameters that need to be set in the compiler to get it to work.  

Thanks in advance.
0
Comment
Question by:gkatz
  • 2
4 Comments
 
LVL 6

Expert Comment

by:Mafalda
Comment Utility
You need to instantiate the templates used ...
On the sun there is a directory where all the templates instantiations go ... you need to clean it up (usually manually or using the MAKEFILE) and then rebuild.
0
 
LVL 86

Accepted Solution

by:
jkr earned 125 total points
Comment Utility
Do you have the template code split into header and implementation files? Most compilers do not support that.
0
 
LVL 3

Author Comment

by:gkatz
Comment Utility
Thank you both for your suggestions.  
Mafalda could you please go into a little bit more explanation.  I'm not sure exactly how to instantiate a template.  When compiling on the solaris 9 or on a windows box I always just wrote templates without having to do anything special.  
0
 
LVL 3

Author Comment

by:gkatz
Comment Utility
jkr your suggestion worked.  I moved the c++ source into the header file and it compiled fine.  

Thanks again for both of your help.


gkatz
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

When writing generic code, using template meta-programming techniques, it is sometimes useful to know if a type is convertible to another type. A good example of when this might be is if you are writing diagnostic instrumentation for code to generat…
Many modern programming languages support the concept of a property -- a class member that combines characteristics of both a data member and a method.  These are sometimes called "smart fields" because you can add logic that is applied automaticall…
The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relat…
The viewer will learn how to pass data into a function in C++. This is one step further in using functions. Instead of only printing text onto the console, the function will be able to perform calculations with argumentents given by the user.

744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now