C++ 从多个C++;文件并使用它
我有一个程序树,其中包含C++ 从多个C++;文件并使用它,c++,g++,shared-libraries,C++,G++,Shared Libraries,我有一个程序树,其中包含 outter.cc,outter.h b.cc,b.h c.cc,c.h 这些.cc文件中的每一个都是这样的: outter.cc: #include "b.h" // do something b.cc #include "c.h" // do something //do something c.cc #include "c.h" // do something //do something 在o
outter.cc,outter.h
b.cc,b.h
c.cc,c.h
这些.cc
文件中的每一个都是这样的:
outter.cc:
#include "b.h"
// do something
b.cc
#include "c.h"
// do something
//do something
c.cc
#include "c.h"
// do something
//do something
在outer.cc
中有一组API定义。我想生成一个.so文件,以便其他人在将程序链接到此.so文件时可以使用我的API
我的问题包括:
/home/xavier/test/
中有一个main.cc
文件,并且我在/home/xavier/test/
中也有生成的.so文件。我应该如何编写这个main.cc
,我应该如何编译这个main.cc文件,使其使用outter.cc中定义的API
谢谢 像下面这样的makefile:
all:a.so
a.so: outer.o b.o c.o
g++ $^ -fPIC -shared -o $@
%.o:%.cc
g++ $< -I(your header file path) -c -o $@
main.cc应包括outter.h b.h c.h
或者将a.so重命名为liba.so,然后将其放入/usr/lib/
然后运行
g++main.cc-la-o main
,如果outer.h
API设计用于隐藏b.h
和c.h
的内部和类型,那么main.cc只需要#包含
。谢谢您的回答!还有一个问题!如果b.h、c.h
和outter.h
有不同的目录怎么办?我应该如何处理-I(您的头文件路径)
?@ConradParker谢谢您的评论。是outter.h
应该向API用户隐藏b.h
和c.h
的详细信息。但是你能更具体地说“设计来隐藏内部和类型”吗?举个例子就好了。我刚刚试过你的方法。这在我这边不起作用。1.它应该是g++$<-I(您的头文件路径)-c-o$@
,您错过了-c标志。2.当我编译main.ccg++main.cc-la-o main
时,出现了这样的错误:致命错误:“找不到outter.h”文件
。我需要把outter.h,b.h,c.h
也放在/home/xavier/test
中吗?很抱歉,我错过了-c,还有一个致命错误:“找不到outter.h”文件,你可以使用g++main.cc-I(你的头文件路径)-la-o main