CryptoPP::Integer m, a, b;
CryptoPP::byte m_str[] = "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF";
CryptoPP::byte a_str[] = "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC";
CryptoPP::byte b_str[] = "5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B";
m.Decode(&(m_str[0]), sizeof(m_str) / sizeof(m_str[0]),CryptoPP::Integer::UNSIGNED);
a.Decode(&(a_str[0]), sizeof(a_str) / sizeof(a_str[0]), CryptoPP::Integer::UNSIGNED);
b.Decode(&(b_str[0]), sizeof(b_str) / sizeof(b_str[0]), CryptoPP::Integer::UNSIGNED);
bool is_odd = m.IsOdd();
CryptoPP::ECP field(m,a,b);
//CryptoPP::DL_GroupPrecomputation<CryptoPP::ECP>::Element group(field);
//multiplying over this field
CryptoPP::ECPPoint p_result = field.ScalarMultiply(p_eph, priv_int);
unsigned long modulus,a_element,b_element;
CryptoPP::Integer m, a, b;
string m_str("FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF");
vector<unsigned char> m_vec = hex_to_bytes(m_str);
m.Decode(&(m_vec.at(0)), m_vec.size(), CryptoPP::Integer::UNSIGNED);
bool is_odd = m.IsOdd();
string a_str("FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC");
vector<unsigned char> a_vec = hex_to_bytes(a_str);
a.Decode(&(a_vec.at(0)), a_vec.size(), CryptoPP::Integer::UNSIGNED);
string b_str("5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B");
vector<unsigned char> b_vec = hex_to_bytes(b_str);
b.Decode(&(b_vec.at(0)), b_vec.size(), CryptoPP::Integer::UNSIGNED);
//field init
CryptoPP::ECP field(m,a,b);
//multiplying over this field google_ephemeral_point * our_privatekey_int
CryptoPP::ECPPoint p_result = field.ScalarMultiply(p_eph, priv_int);
//obtaining shared from result:
CryptoPP::byte x_res[32];
CryptoPP::byte y_res[32];
p_result.x.Encode(&(x_res[0]), 32,CryptoPP::Integer::UNSIGNED);
p_result.y.Encode(&(y_res[0]), 32, CryptoPP::Integer::UNSIGNED);
Shared secret obtained, further things are describing in main theme on it: https://groups.google.com/forum/#!topic/cryptopp-users/IFvwPWcbxCI