icc & export
От: Аноним  
Дата: 14.08.05 00:36
Оценка:
Что-то я не пойму. В документации по icc 9.0 for linux есть опция -export, которая должна включать поддержку экспорта шаблонов. Но как начнёшь её использовать, компилятор ест, а линкер ругается. Причём странно, все нужные .et файлы генерируются, а на стадии линковки я всё равно получаю undefined reference. Может кто знает в чём проблема? Вот тест, который я пытаюсь скомпилировать:

// test3.h
#if !defined(test3_h_98273492)
#define test3_h_98273492

export template <typename T>
T foo(T x);

#endif // test3_h_98273492


// test3.cpp
#include "test3.h"

template <typename T>
T foo(T x)
{
    return g(x * x + x);
}


// test3main.cpp
#include <cmath>
#include <iostream>
#include "test3.h"

using namespace std;

double g(double x)
{
    return sqrt(x);
}

int main()
{
    double x = 5.5;
    cout << foo(x) << endl;
}


# compile
$ icpc -export test3.cpp test3main.cpp -o test3
/tmp/icpcGrZ2LE.o(.text+0x1e): In function `main':
: undefined reference to `double foo<double>(double)'
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.