У меня возникают некоторые проблемы (например, ошибки привязки) с явным экземпляром шаблона функции. В Visual Studio проект подключается нормально, только под g ++/Unix, используя Eclipse-CDT, связь создает ошибки.явное создание шаблона функции не работает (g ++)
Вызов функции является частью статической библиотеки, которая связана с динамической библиотекой в большом проекте. Архитектура функции выглядит следующим образом: Шаблон
- функция объявлена (но не реализовано) внутри пространства имен в моем
MathUtils.h
файле. Одним из аргументов функции является сам шаблон структуры, который объявлен и, реализованный в этом файлеh
(в том же пространстве имен). - Функция реализации и создания экземпляра находится в
MathUtils.cpp
. - вызов функции находится в
someFile.cpp
(который, конечно,#include "MathUtils.h"
), который скомпилирован & связан как часть статической библиотеки.
То, что сводит меня (почти) с умом, то, что ошибки сборки не полностью воспроизводимые, и я подозреваю, что затмение является быть обвинено (может пропустить некоторые шаги, хотя я использую clean project
перед каждой сборкой).
Примерно через час конфигурация отладки построена без ошибок, но сбой версии с ошибкой связи undefined reference to...
. Затем в течение следующего часа обе конфигурации не удались. Затем я сделал небольшой проект с тремя файлами, упомянутыми выше, и скомпилировал его как из командной строки, так и из Eclipse - никаких ошибок вообще. Теперь обе конфигурации, похоже, подключены нормально.
У кого-нибудь возникли подобные проблемы с использованием Eclipse-CDT? Какие-либо предложения?
EDIT: поскольку проблема не является легко (или вообще) воспроизводимой, я думаю, будет сложно получить ответ. Я обновлю, если у меня появятся новые идеи.
Это не так, обратите внимание на `явном instantiation`. – 2011-04-28 06:38:18
Моя ошибка - я неправильно использую шаблоны функций для шаблонов классов. – stackmate 2011-04-29 18:24:27