Arhn - архитектура программирования

Связывание библиотеки в g++ не работает

Я пытаюсь скомпилировать файл .cpp, который использует матричную библиотеку. Файлы библиотеки libnewmat.a и libnewmat.so находятся в пути /usr/lib64. Включаемые файлы находятся в пути /usr/include/newmat , поэтому я попытался (несколько способов) скомпилировать, т.е. с помощью:

g++ -I/usr/include -L/usr/lib64 -lnewmat new.cpp -o new3

но компилятор не находит библиотеку. Содержимое .cpp:

#include <iostream>
#include <newmat/newmat.h>
#include <newmat/newmatio.h>

using namespace std;

int main()
{
Matrix A(2,2);
Real b[] = {1,2,3,4};
A << b;

cout << A << endl;

return 0;
}

Компилятор говорит:

test.cpp: In function ‘int main()’:
test.cpp:9: error: ‘Matrix’ was not declared in this scope
test.cpp:9: error: expected ‘;’ before ‘A’
test.cpp:10: error: ‘Real’ was not declared in this scope
test.cpp:10: error: expected ‘;’ before ‘b’
test.cpp:11: error: ‘A’ was not declared in this scope
test.cpp:11: error: ‘b’ was not declared in 

этот объем

Не могли бы вы предоставить мне правильный код C++ или правильную инструкцию командной строки?

Спасибо, Кеплер

21.07.2011

Ответы:


1

Это не проблема библиотеки - это проблема компилятора - он не может найти какое-либо определение для Matrix (возможно, в ваших включаемых файлах, но мы не можем определить это с помощью предоставленной информации)

[edit]
Убедитесь, что ваши классы во включаемых файлах указаны правильно
[/edit]

21.07.2011
  • Спасибо, я забыл использовать пространство имен NEWMAT; То есть, потому что в Netbeans на OpenSuse, где я запускал эту библиотеку до успеха, мне не нужно было использовать это пространство имен. БОЛЬШОЕ СПАСИБО !!! :-) Кеплер 22.07.2011

  • 2

    Если вы недавно установили эту библиотеку самостоятельно, вам, вероятно, потребуется запустить sudo ldconfig, чтобы загрузить ее в кеш компоновщика.

    РЕДАКТИРОВАТЬ: Как сказал Кевин, это не ошибка связывания, которую вы получаете.

    Возможно, это проблема пространства имен? using namespace NEWMAT;

    согласно этому: http://www.robertnz.net/nm10.htm#namesp

    21.07.2011
  • Я запустил sudo ldconfig и попробовал еще раз. Ничего не изменилось. Есть ли конкретная папка, в которой я должен запускать ldconfig? 22.07.2011
  • Проблема задолго до того, как компоновщик/загрузчик 22.07.2011
  • Действительно, это ошибка компиляции, а не ошибка ссылки. Моя голова спит :С. Возможно, классы Matrix и Real заключены в пространство имен? 22.07.2011
  • robertnz.net/nm10.htm#namesp Не уверен, что вы скомпилировали его с включенным или не. 22.07.2011
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..