Compilation problem MSVC with recent 'sort' implementation

John W. Eaton jwe at bevo.che.wisc.edu
Sun Feb 3 15:00:22 CST 2008


On  3-Feb-2008, Michael Goffioul wrote:

| On 2/3/08, Michael Goffioul <michael.goffioul at gmail.com> wrote:
| > Unfortunately, this is not enough to make it compilable with
| > MSVC. At link stage of liboctave, I get duplicated symbols
| > error (see below). This seems logical to me to have duplicated
| > symbols as Array-C.cc includes Array.cc and that the assign
| > instantiation also instantiates Array<double>. However, as
| > Array-d.cc also perform explicit specialization, I guess the
| > compiler cannot determine which one it has to export in the
| > DLL (I also wonder how gcc resolves this).
| >
| > I don't know how to handle this.
| 
| The attached patch solves the problem.
| 
| Michael.
| 
| 
| liboctave/ChangeLog
| 
| 2008-02-03  Michael Goffioul <michael.goffioul at gmail.com>
| 
|     * Array.cc (ascending_compare, descending_compare,
|     Array<T>::sort): Declare explicit specialization for T=double
|     to avoid symbol duplication error at link time.
|     * Array-d.cc: ascending_compare and descending_compare
|     are not part of Array<T> class.

I applied this patch and checked it in.

Thanks,

jwe


More information about the Octave-maintainers mailing list