>>352ですが解決しました。

c++ではマングリングが行われるためソースコード上の関数名とコンパイル後の関数名が異なる
一方cコードとしてコンパイルしたライブラリはソースコード上の関数名がそのままコンパイル後の関数名になる
この違いが原因で、c++コードとしてコンパイルされた呼び出し側プログラムではライブラリの関数を参照できなくなってしまっていました
解決策はc++側の関数宣言にextern "c"をつけること。もちろんヘッダーファイルなのでinclude文をextern "c"で囲んでしまうことでした。

たまに見かけるextern "c"ってこういうことだったんですね。お騒がせいたしました。