我在使用自定义共享库时遇到一些问题,因为我从其他两个源文件中获取了某些函数的未定义引用错误。
如果我使用主文件(发布:)编译整个项目,一切正常。但是如果我创建一个共享库(lib :)并将该库与主文件(全部:)一起使用,则会发生这些编译时错误。
这是我的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-option编译期间没有错误,我假设存在特定于链接器的问题。
我使用 GNU Binary Utilities
检查了特定的目标文件nm -C obj/specific.o | grep functionName
没有结果。我为共享库做了同样的事情,但这次有以下结果,
U functionName(std::vector<int>)
表示该功能未知。
您有什么建议,如何解决这个问题?