Неразрешенная ошибка внешнего символа при создании Armadillo DLL

Я пытаюсь создать динамическую библиотеку библиотеки линейной алгебры Armadillo, которая изначально является библиотекой только для заголовков, использующей VC ++ 2010 в Win XP. Я создал новый проект, добавил исходные файлы и создал файл .def, определяющий экспорт только одной функции Armadillo (класс Col), и получил ошибку LNK2001 для класса Col. Я могу создать основной и использовать Col просто отлично, поэтому я думаю, что Col правильно включен.

Я также пробовал использовать «__declspec (dllexport)» в определении функции, и оно компилируется, но функция не экспортируется, так как использование dumpbin ничего не показывает, и я не могу успешно использовать .dll. Я что-то упустил?


person MajorChipHazard    schedule 31.01.2013    source источник


Ответы (1)


Поскольку Armadillo - это библиотека шаблонов C ++, которая использует шаблоны выражений, я не думаю, что возможно создать DLL из Это.

Шаблоны выражений выполняются (запускаются) во время компиляции компилятором C ++ при компиляции кода, использующего классы Armadillo. Когда библиотека C ++ использует шаблоны выражений (часть метапрограммирования шаблонов), библиотеку можно рассматривать как расширение компилятора C ++.

Весь код Armadillo находится в заголовках. Таким образом, даже если вам удалось экспортировать один из классов (например, класс Col), ни один из связанных математических механизмов (например, сложение, умножение и т. Д.) Не будет экспортирован, что определено во всех других частях библиотека.

person mtall    schedule 31.01.2013