Si el registro contenedor es un parámetro de una función que utilizas, entonces tu programa debe conocerlo, ya que le pasas el parámetro que previamente le has preparado.
Pero puede ser que ese parámetro lo obtengas de otra función de la dll y que realmente no interese saber como está definido... Piensa que
Código:
typedef struct {
struct FLAC__StreamEncoderProtected *protected_;
struct FLAC__StreamEncoderPrivate *private_;
} FLAC__StreamEncoder;
no es mas que una estructura de dos punteros, que bien podría ser
Código:
typedef struct {
void *protected_;
void *private_;
} FLAC__StreamEncoder;
Si a ti te da igual, al compilador también.
Otra posibilidad es extraer la declaración de ese.c que comentas y colocarla en una cabecera.
Saludos.