If you specify CPP in the Language Clause, then you must declare the main C++ function as extern “C” to ensure that the function name is not converted to an overloaded C++ name, for example:
extern “C” void my_cpp(long int *input_int, long int *result, char sqlstate[6]) {
See Teradata Vantage™ - SQL External Routine Programming, B035-1147 for details.