У меня возникли некоторые проблемы (например, ошибки компоновки) с явным созданием шаблона функции.В Visual Studio проект связывается нормально, только в g ++ / Unix, с использованием Eclipse-CDT, связь вызывает ошибки.
Вызов функции является частью статической библиотеки, которая связана с динамической библиотекой, вбольшой проект.Архитектура функции выглядит следующим образом:
- шаблон функции объявлен (но не реализован) внутри пространства имен в моем файле
MathUtils.h
.Один из аргументов функции сам по себе является структурным шаблоном, который объявлен и , реализованным в этом файле h
(в том же пространстве имен). - Реализация и создание экземпляра функции находятся в
MathUtils.cpp
. - вызов функции находится в
someFile.cpp
(что, конечно, #include "MathUtils.h"
), который скомпилирован и связан как часть статической библиотеки.
То, что меня возбуждает (почти) безумно то, что ошибки сборки не полностью воспроизводимы, и я подозреваю, что виноват Eclipse (возможно, пропуская некоторые шаги, хотя я использую clean project
перед каждой сборкой).
Примерно час конфигурация отладки создавалась без ошибок, но выпуск не удался с ошибкой связывания undefined reference to...
.Затем в течение следующего часа обе конфигурации потерпели неудачу.Затем я сделал небольшой проект, содержащий только 3 файла, упомянутых выше, и скомпилировал его как из командной строки, так и из Eclipse - без ошибок.Теперь обе конфигурации, кажется, связываются нормально.
Кто-нибудь испытывал подобные проблемы при использовании Eclipse-CDT?Любые предложения?
РЕДАКТИРОВАТЬ: так как проблема не легко (или вообще) воспроизводима, я думаю, будет трудно получить ответ.Я буду обновлять, если у меня есть какие-либо новые идеи.