0

XCppRefllibを使用してC++でのリフレクションを実現しようとしています。http://www.extreme.indiana.edu/reflcpp/。このライブラリをLinuxに正常にインストールし、ライブラリのソースコードで指定されたテストを実行できました。

これが私が書いたコードです-

#include <iostream>
using namespace std;

#include <reflcpp/ClassType_tmpl.hpp>
#include <reflcpp/BoundClassType_tmpl.hpp>
#include <reflcpp/Exceptions.hpp>

using namespace reflcpp;

#include "Complex.h"


int main()
{
    //ClassType ct = ClassType::getClass( string("Complex") );
    ////PtrHolder_smptr_t obj = ct.createInstance();
    //assert(ct.name() == "B");
    Complex x;

    int ret;
    Complex a;

    ClassType c = ClassType::getClass( string("Complex") );

    //cout<<"name :: "<<c.name()<<endl;
}

うまくコンパイルされているようです-

   $ g++ -g -I /usr/local/include/reflcpp-0.2/ -L /usr/local/include/reflcpp-0.2/ -lreflcpp  main.cpp  

ただし、実行可能ファイル(a.out)を実行すると、コアダンプが発生します

a.out: Type.cpp:87: static const reflcpp::Type_body* reflcpp::Type_body::getType(const std::string&): Assertion `s_class_name_map' failed.
Aborted (core dumped)

誰かが以前にこのlibを使用したことがありますか?助けてください。

4

1 に答える 1

0

main.o を libreflcpp.a にリンクする必要があります。コンパイル後、これを使用します:

g++ -p -pg -o"project_name"  ./A.o ./A_reflection.o ./main.o  /usr/local/lib/libreflcpp.a
于 2013-04-10T23:35:29.747 に答える