I'm not familiar with that specific error message, but what I do know is that the ABI generation feature will only work if your code is properly annotated by marking the actions and DB tables like shown in this example: https://github.com/andresberrios/token_ram_recovery/blob/master/token_ram_recovery.hpp
There you can see that the action methods have been annotated:
//@abi action
void destroytoken( string symbol );
and the DB tables are annotated like this, on the struct that represents the data type stored in the table:
//@abi table accounts i64
struct account {
asset balance;
uint64_t primary_key()const { return balance.symbol.name(); }
};
So the format for DB table annotations is //@abi table <table_name> <index_data_type>
.
I think you can use this annotations on either the .hpp
or the .cpp
file. Without using these annotations, the automatic generation of the ABI using eosiocpp
will not work properly or will generate an ABI with missing parts. You can also write the ABI file by hand, which is why in the EOSIO/eos repository you will find the ABI files already there instead of them being generated from the other source files like the WAST and WASM files are. They wrote the ABIs by hand.