C++ 在Linux中使用共享库时对函数的未定义引用

C++ 在Linux中使用共享库时对函数的未定义引用,c++,linux,makefile,shared-libraries,undefined-reference,C++,Linux,Makefile,Shared Libraries,Undefined Reference,我在使用自定义共享库时遇到一些问题,因为我从许多其他源文件中的两个文件中获得了某些函数的未定义引用错误 如果我用主文件(release:)编译整个项目,一切都很好。但是,如果我创建一个共享库(lib:)并将该库与主文件(all:)一起使用,则会发生编译时错误 下面是我的makefile的一个片段 release: $(CC) -Wall -s -w $(INCLUDES) $(LIBRARY) $(SRC) mainfile.cpp $(OCV) $(BOOST) $(GLOG) $(GF

我在使用自定义共享库时遇到一些问题,因为我从许多其他源文件中的两个文件中获得了某些函数的未定义引用错误

如果我用主文件(release:)编译整个项目,一切都很好。但是,如果我创建一个共享库(lib:)并将该库与主文件(all:)一起使用,则会发生编译时错误

下面是我的makefile的一个片段

release:
   $(CC) -Wall -s -w $(INCLUDES) $(LIBRARY) $(SRC) mainfile.cpp $(OCV) $(BOOST) $(GLOG) $(GFLAGS) -o test.exe
lib:
   $(CC) -fPIC $(INCLUDES) $(LIBRARY) -c $(SRC) $(OCV) $(BOOST) $(GLOG) $(GFLAGS) 
   mv *.o obj/
   $(CC) -shared -o libOutput.so obj/*.o
all:
   $(CC) -Wall -s -w $(INCLUDES) $(LIBRARY) mainfile.cpp -L/path/to/lib/ -lOutput $(OCV) $(BOOST) $(GLOG) $(GFLAGS) -o project.exe
由于使用release选项编译期间没有错误,因此我假设存在特定于链接器的问题

我使用GNU二进制实用程序检查了特定的对象文件

没有结果。我对共享库也做了同样的操作,但这次的结果如下:

U functionName(std::vector<int>)
U函数名(std::vector)
这意味着函数未知


你有什么建议,如何解决这个问题

是编译时错误还是运行时错误?是编译时错误是什么错误?是编译时错误还是运行时错误?是编译时错误是什么错误?
U functionName(std::vector<int>)