たぶんそれで大丈夫だけど、試したことはないな

そのオープンソースのライブラリが一応Windowsをサポートしているんなら
DLL boundaryを超えた場合の問題について開発者に説明して
libfoo_free()のような関数を入れてもらうのが本来は望ましいんじゃないの

objは互換性あるよ、少なくとも32bitでは
gccもwin32ターゲットの場合はCOFFを吐くし、fopenやmallocみたいな関数への
参照はどっちでコンパイルしたとしても最終的にリンク時に解決されるので
そのタイミングでリンクされるCランタイムが使われることになるわけだ

x64だとどうだったかな……x64のABIは確か結構ややこしいことになってるんだよな