1

Windows では、モジュール定義ファイル (.def) を使用してマングルされていない関数をエクスポートする C++ ライブラリへの C インターフェイス (extern "C" { // インターフェイス }) があります。

私は比較的経験の浅いLinuxで同じことを再現しようとしています。NIX システムでは、すべての関数がデフォルトでエクスポートされることを理解しています。これを念頭に置いて、共有オブジェクトを作成し、それを nm コマンドで実行しました。

Windows とは異なり、関数名が壊れていたことに驚きました。

どうすればこれを防ぐことができますか?

4

1 に答える 1

9

通常の解決策は、関数を宣言することextern "C"です。これにより、名前が C のようにマングルされるだけでなく、関数が C の呼び出し規則を使用するようになります。

于 2012-05-25T15:48:10.920 に答える