I would like to use setjmp and longjmp in a C program that links to a library that is implemented in C++ (but has a C API).
The C++ code does do dynamic memory allocation and pointers get passed through the API, but as long as the C side of the code manages those (opaque) objects correctly, there shouldn't be any messing up when using longjmp, right?
I know it's not safe to use these functions in C++ code, but should it be safe in C code that is linked to C++ code?
The fact that you call C++ functions from your C code does not make setjmp and longjmp more unsafe than they always are.
What's important is that if your library allocates resources you must have recovery code in place to ensure that those are released properly after longjmp is called. While this is likely easy for your own allocations, it may be hard or impossible for the C++ library depending on how the C interface you use is structured.