Динамическое связывание с библиотекой Boost вместо заголовка - PullRequest
0 голосов
/ 13 мая 2018

Я новичок в использовании Boost, и я понял, как с этим справиться, включив интересующие меня файлы заголовков.

По некоторым причинам мне приходится работать с динамическими библиотеками. Я установил этот, но я не могу увидеть самый важный для меня модуль - модуль для работы с матрицами и так далее. Я думаю, что это должен быть uBlas.

*** СУТЬ: *

Я пытаюсь заменить эти строки **

#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/io.hpp>

при загрузке .a .so библиотек. Проблема в том, что я не могу понять, какой модуль соответствует uBlas. Я не уверен, есть ли этот модуль.

Список доступных библиотек (я называю эти «модули»)

Вы видите, что нет никаких "числовых" или "убласовых" модулей ...

Я немного сбит с толку. Какой модуль мне нужно использовать, чтобы использовать те же возможности, что и при использовании #include и т. Д.

Некоторые уточнения:

Как мне это увидеть? Я могу использовать только файлы заголовков или вместо этого загрузить библиотеку (.a или .so). И я хотел бы найти файл-аналог (.a или .so), позволяющий использовать ублас, а также я включил заголовочные файлы.

Ответы [ 2 ]

0 голосов
/ 13 мая 2018

Вам не нужно создавать какую-либо статическую или динамическую библиотеку для использования убласа.ublas - это библиотека только для заголовков (полностью шаблонная).

Если вы установили Boost с менеджером пакетов (например, apt), файлы заголовков ublas должны находиться в папке /usr/include/boost/numeric/ublas.

Просто добавьте строки

#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/io.hpp>

в исходные файлы или файлы заголовков.Затем вы можете, например, создать экземпляр класса матрицы

boost::numeric::ublas::matrix<float> A(3,4);
0 голосов
/ 13 мая 2018

@ Rzu Я хотел бы использовать библиотеки вместо заголовков.И я не могу найти подходящую библиотеку.И для меня странно, что есть заголовки, но если я генерирую .a и .so файлы, то нет подходящего файла (ublas)

Это ложная дихотомия.Даже с общими библиотеками вы обычно используете (эффективно: нужно) иметь соответствующие заголовки и включать их при компиляции кода.

Единственное отличие состоит в том, является ли реализация (технически, определения ) также находятся в заголовочных файлах.Если это так, нет необходимости связывать определения (ни статически, ни динамически).

Это неизбежно для библиотек шаблонов:

Так что на самом деле, если вам требуется неуниверсальный интерфейс , который вы можете динамически связать, вам нужно определить подмножество в библиотекесвой собственный, который вы можете затем распространить и связать в форме, которую вы предпочитаете.

...