如何在我自己的staticLib中使用staticLib

How to use staticLib in my own staticLib?

本文关键字:staticLib 自己的 我自己      更新时间:2023-10-16

我尝试创建自己的库,以便在C/C++中的其他项目中使用它。我的静态库使用xercesc库。Eclipse尝试使用gcc而不是g++编译包含xercesc的lib。如果我试图编译我的代码,我得到了以下错误:

Info: Internal Builder is used for build
g++ "-IC:\00_Projects\Ladeplanberechnung\LadeplanLib\lib\include" -O0 -g3 -Wall -c -fmessage-length=0 -o "src\viterbi\ViterbiAlgorithm.o" "..\src\viterbi\ViterbiAlgorithm.cpp" 
In file included from ..srcviterbiLocalSuitability.h:11:0,
from ..srcviterbiViterbiAlgorithm.h:8,
from ..srcviterbiViterbiAlgorithm.cpp:8:
gcc "-IC:\00_Projects\Ladeplanberechnung\LadeplanLib\lib\include" -O0 -g3 -Wall -c -fmessage-length=0 -o "lib\include\xercesc\util\RefArrayVectorOf.o" "..\lib\include\xercesc\util\RefArrayVectorOf.c" 
..libincludexercescutilRefArrayVectorOf.c:25:1: error: unknown type name 'XERCES_CPP_NAMESPACE_BEGIN'
XERCES_CPP_NAMESPACE_BEGIN
^~~~~~~~~~~~~~~~~~~~~~~~~~
..libincludexercescutilRefArrayVectorOf.c:30:10: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
template <class TElem>
^
..libincludexercescutilRefArrayVectorOf.c:39:10: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
template <class TElem> RefArrayVectorOf<TElem>::~RefArrayVectorOf()
^
..libincludexercescutilRefArrayVectorOf.c:49:10: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
template <class TElem> void
^
..libincludexercescutilRefArrayVectorOf.c:61:10: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
template <class TElem> void RefArrayVectorOf<TElem>::removeAllElements()
^
..libincludexercescutilRefArrayVectorOf.c:74:10: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
template <class TElem> void RefArrayVectorOf<TElem>::
^
..libincludexercescutilRefArrayVectorOf.c:102:10: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
template <class TElem> void RefArrayVectorOf<TElem>::removeLastElement()
^
..libincludexercescutilRefArrayVectorOf.c:112:10: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
template <class TElem> void RefArrayVectorOf<TElem>::cleanup()
^
..libincludexercescutilRefArrayVectorOf.c:122:1: error: expected '=', ',', ';', 'asm' or '__attribute__' at end of input
XERCES_CPP_NAMESPACE_END
^~~~~~~~~~~~~~~~~~~~~~~~

eclipse为什么要编译xercesc?我可以强迫eclipse用g++编译这个项目吗。

您需要明确地告诉gcc您的源代码是C++,因为它将假设以.c结尾的文件是用C编写的。将-x c++添加到命令中,它应该可以工作:

gcc "-IC:\00_Projects\Ladeplanberechnung\LadeplanLib\lib\include" -O0 -g3 -Wall -c -fmessage-length=0 -x c++ -o "lib\include\xercesc\util\RefArrayVectorOf.o" "..\lib\include\xercesc\util\RefArrayVectorOf.c"