我需要爲包裝我的C++庫的C代碼創建封裝器庫。有沒有辦法以這種方式創建包裝器庫,以便用戶只需鏈接此包裝器庫,並且不必在鏈接器命令行中包含所有(C++)庫?創建靜態庫時嵌入所有外部引用
我的測試項目的結構是這樣的:
.
├── lib
│ ├── cpp
│ │ ├── print.cc
│ │ └── print.h
│ ├── lib.cc
│ ├── lib.h
└── main.c
的main.c中是使用我的圖書館爲例C應用程序。 lib.h和lib.cc文件是包含C綁定的包裝庫。我的C++庫駐留在cpp子文件夾中。
目前,我有它通過使用下面的命令鏈的工作:
cd lib
g++ -c lib.cc
ar rcs libib.a lib.o
cd ..
gcc -Ilib -Llib main.c -lib -lstdc++
然而,正如你可以看到用戶的連接步驟需要包括在我的C++庫使用的C++庫。在這種情況下,使用libstdC++。so(或使用libstdC++。a if -static)。
我想包括我libib.a使得用戶可以簡單地使用下面的命令編譯所有的C++庫:
gcc -Ilib -Llib main.c -lib
你應該製作共享庫(不是靜態的),看我的答案。 –