C++ name mangle の非互換を回避するには?

C++の関数名や変数名は型情報を含むシンボル名に変換されてからリンクされるんだけど、この変換規則がコンパイラによって異なるせいで、VC++でビルドされたDLLをminGWから利用できない場合があるみたいだ。IRCでネタにしたら「うまく隠蔽できるはずだ」と主張する人がいたんだけど、俺にはいまいち同意できなかった。関数だけならdefファイルを見て関数を定義して、その中でDLL中の関数へのポインタを使えばいいと思うけど、C++ヘッダファイル中のインライン関数がメソッドのアドレスやstaticメンバ変数を参照してたらラップできないと思う。