Re: линковка шаблонов - множественное определение
От: Кодт Россия  
Дата: 24.03.15 12:29
Оценка: 2 (1) +1
Здравствуйте, Honduras, Вы писали:

При чём здесь шаблоны?
У класса shifra::galois::field забыли написать inline у определений некоторых функций:
— конструктора
— деструктора
— create_array
— create_2d_array
Перекуём баги на фичи!
линковка шаблонов - множественное определение
От: Honduras  
Дата: 24.03.15 11:21
Оценка:
http://schifra.com/downloads.html вот берем первый пример schifra_reed_solomon_example01.cpp он достаточный сишник для проекта, еще с десяток hpp, теперь копируем его в 2.срр, а main переименовываем в main2. В результате имеем
  ошибки
||=== Build: Debug in 2 (compiler: GNU GCC Compiler) ===|
bin\schifra_reed_solomon_example01.o||In function `ZN7schifra6galois5fieldC2EijPKj':|
D:\Drob\RS\schifra.com\01\schifra_galois_field.hpp|225|multiple definition of `schifra::galois::field::field(int, unsigned int, unsigned int const*)'|
bin\2.o:D:\Drob\RS\schifra.com\01\schifra_galois_field.hpp|225|first defined here|
bin\schifra_reed_solomon_example01.o||In function `ZN7schifra6galois5fieldC2EijPKj':|
D:\Drob\RS\schifra.com\01\schifra_galois_field.hpp|225|multiple definition of `schifra::galois::field::field(int, unsigned int, unsigned int const*)'|
bin\2.o:D:\Drob\RS\schifra.com\01\schifra_galois_field.hpp|225|first defined here|
bin\schifra_reed_solomon_example01.o||In function `ZN7schifra6galois5fieldD2Ev':|
D:\Drob\RS\schifra.com\01\schifra_galois_field.hpp|281|multiple definition of `schifra::galois::field::~field()'|
bin\2.o:D:\Drob\RS\schifra.com\01\schifra_galois_field.hpp|281|first defined here|
bin\schifra_reed_solomon_example01.o||In function `ZN7schifra6galois5fieldD2Ev':|
D:\Drob\RS\schifra.com\01\schifra_galois_field.hpp|281|multiple definition of `schifra::galois::field::~field()'|
bin\2.o:D:\Drob\RS\schifra.com\01\schifra_galois_field.hpp|281|first defined here|
bin\schifra_reed_solomon_example01.o||In function `ZN7schifra6galois5field12create_arrayEPcRKjjPPi':|
D:\Drob\RS\schifra.com\01\schifra_galois_field.hpp|419|multiple definition of `schifra::galois::field::create_array(char*, unsigned int const&, unsigned int, int**)'|
bin\2.o:D:\Drob\RS\schifra.com\01\schifra_galois_field.hpp|419|first defined here|
bin\schifra_reed_solomon_example01.o||In function `ZN7schifra6galois5field15create_2d_arrayEPcjjjPPPi':|
D:\Drob\RS\schifra.com\01\schifra_galois_field.hpp|429|multiple definition of `schifra::galois::field::create_2d_array(char*, unsigned int, unsigned int, unsigned int, int***)'|
bin\2.o:D:\Drob\RS\schifra.com\01\schifra_galois_field.hpp|429|first defined here|
||=== Build failed: 12 error(s), 0 warning(s) (0 minute(s), 4 second(s)) ===|

что инетересно какой будь std::vector свободно могу использовать в нескольких файлах. schifra_galois_field.hpp первый include. толи остальные прошли, толь после 12 бросил линковать
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.