将动态库链接到我的项目

Linking dynamic library to my project

本文关键字:我的 项目 链接 动态      更新时间:2023-10-16

阅读了很多文章后,我真的很困惑。我想将动态库链接到我的CPP代码。

库在/usr/local/include/sbml中并且可以在/usr/local/lib

中找到libsbml.so文件

我有一个看起来像这样

的makefile
SHELL = /bin/sh
VERSION = 5.04.02
CC      = /usr/bin/g++
CFLAGS  = -Wall -g -D_REENTRANT -DVERSION="$(VERSION)"
LDFLAGS = -lsbml
OBJ = main.o SBML.o
prog: $(OBJ)
    $(CC) $(CFLAGS) -o prog $(OBJ) $(LDFLAGS)
%.o: %.c
    $(CC) $(CFLAGS) -c $<
.PHONY : clean
clean :
    -rm edit $(OBJ)

如果我运行了makefile,我会收到以下错误:(对sbmlreader :: readsbmlfromfile())

g++    -c -o SBML.o SBML.cpp
/usr/bin/g++ -Wall -g -D_REENTRANT -DVERSION="5.04.02" -o prog main.o SBML.o -lsbml
sbml.o: In Funktion `SBML::readSBML()':
sbml.cpp:(.text+0x129): Nicht definierter Verweis auf `SBMLReader::readSBMLFromFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
collect2: error: ld returned 1 exit status

库未链接,因为您还需要指定包含SO-File的文件夹:

LDFLAGS = -L/usr/local/lib -lsbml

现在它应该链接,您的未解决的符号也应该消失。