I don't know Vala, but if you can call native code, declare C structures and pass them as pointers to said native code, and define functions that use C calling conventions, it should be possible. But it will certainly be easier to do it in C/C++.
Edit: its homepage says
valac produces C source and header files from Vala source files as if you've written your library or application directly in C. Using a Vala library from a C application won't look different than using any other GObject-based library. There won't be a vala runtime library and applications can distribute the generated C code with their tarballs, so there are no additional run- or build-time dependencies for users.
So, although this is not definitive, I'd say you probably can.