-1

catkin で symbolicc++ ツールボックスを使用しようとしています。より大きなプロジェクトでは、次の構造があります。

//main2.cpp
#include "someheader.h"
int main(){
   Symbol a;
   Symbolicclass b(a);
   b.func();
}

//someheader.h
#ifndef SOMEHEADER_H
#define SOMEHEADER_H
    #include "symbolicclass.h"
#endif

//symbolicclass.h
#ifndef SYMBOLICCLASSHEADER_H
#define SYMBOLICCLASSHEADER_H
    #include "symbolicc++.h"
    using namespace std;

    class Symbolicclass{
       Symbolic value;
       public:
          void func();
          Symbolicclass(Symbolic _value){value=_value;};
    };
#endif

//symbolicclass.cpp
#include "symbolicclass.h"
void Symbolicclass::func(){ printf("whatever"); };

全体の catkin パッケージは 、 https : //www.dropbox.com/s/4khoagm3uhsbs31/symbolic.zip?dl=0 にあります。symbolicc++ ライブラリが含まれているため、34Mb です。

SymbolicC++ ライブラリの複数の定義エラーが発生するよりも? 例えば

/home/Projects/SymbolicPlatform/Catkin/src/symbolic/thirdparty/SymbolicC++3-3.35/headers/symbolic/functions.h:1105: multiple definition of `Kronecker::Kronecker(Kronecker const&)'
CMakeFiles/symbolic_node.dir/src/main.cpp.o:/home/Projects/SymbolicPlatform/Catkin/src/symbolic/thirdparty/SymbolicC++3-3.35/headers/symbolic/functions.h:1105: first defined here

CMakeFiles/symbolic_node.dir/src/symbolic_agent.cpp.o: In function `Kronecker::Kronecker(Symbolic const&, Symbolic const&)':
/home/Projects/SymbolicPlatform/Catkin/src/symbolic/thirdparty/SymbolicC++3-3.35/headers/symbolic/functions.h:1107: multiple definition of `Kronecker::Kronecker(Symbolic const&, Symbolic const&)'
CMakeFiles/symbolic_node.dir/src/main.cpp.o:/home/Projects/SymbolicPlatform/Catkin/src/symbolic/thirdparty/SymbolicC++3-3.35/headers/symbolic/functions.h:1107: first defined here

など。CMakeLists の唯一の違いは次のとおりです。

add_executable(symbolic_node src/main1.cpp) //WORKING FOR SIMPLE EXAMPLE

add_executable(symbolic_node src/main2.cpp src/symbolicclass.cpp)//CRAZY ERRORS

何が問題なのか分かりますか?! 私にとっては、複数の定義エラーが発生することは意味がありませんが、#include "symbolic++.h" を 1 回使用するだけですか?! エラーが CMakeLists にある可能性があると思います。そこで、symbolicc++ ライブラリをビルドしてプロジェクトに追加します。助けてくれてどうもありがとう!

4

1 に答える 1