Как добавить в среду пути к библиотекам C, которые я хочу использовать в C ++

Я хочу использовать VLFeat Libaries в C из файла C ++. Их учебник по g ++ представляет базовый пример «Hello World», который скомпилирован следующим образом:

g++ main.cpp -o vlfeat-test -I /disk/no_backup/lesi/vlfeat-0.9.20/ -L /disk/no_backup/lesi/vlfeat-0.9.20/bin/glnxa64/ -lvl

Это отлично работает. Теперь я хочу добавить библиотеку в мой .bashrc, поэтому мне не нужны дополнительные флаги:

export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/disk/no_backup/lesi/vlfeat-0.9.20
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/disk/no_backup/lesi/vlfeat-0.9.20/bin/glnxa64

и используйте это так:

g++ main.cpp -o vlfeat-test

К сожалению, я получаю следующую ошибку:

/tmp/cc6tzB55.o: In function `main':
main.cpp:(.text+0x10): undefined reference to `vl_get_printf_func'
collect2: error: ld returned 1 exit status

Что я делаю неправильно?

Вот код «Hello World» из учебника:

extern "C" {
#include <vl/generic.h>
}

int main (int argc, const char * argv[]) {
VL_PRINT ("Hello world!\n") ;
return 0;
}

VLFeat Библиотека Ссылка: http://www.vlfeat.org/index.html

0

Решение

Вы указываете, где искать заголовок, но не говорите компилятору связываться с библиотекой.

Нет волшебного сопоставления от «этот файл C включает этот заголовок» к «я лучше связать эту программу с этой библиотекой», это не работает так.

Я мог бы сделать библиотеку с одним unwind-mess.h заголовок, который объявляет функции, реализованные в трех разных файлах библиотеки, и вызывает библиотеки libcream.a, libmeringue.a а также libberry.a,

Вам все еще нужно -lvl возможность сообщить компилятору, что есть дополнительный библиотечный код, с которым необходимо связать.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]