問題タブ [one-definition-rule]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - ヘッダー ファイルでラムダを使用すると、ODR に違反する可能性がありますか?
ヘッダーファイルに次のように記述できますか?
また
各ソースファイルでは、ラムダの型が異なる可能性があるため、std::function
(target_type
の結果に含まれる型は異なります)。
これは ODR ( One Definition Rule ) 違反ですか? よくあるパターンのように見えますが、これは妥当な行為ですか? 2 番目のサンプルは毎回 ODR に違反しますか?それとも、少なくとも 1 つのコンストラクターがヘッダー ファイルにある場合にのみ違反しますか?
c++ - ODR の使用に関するさらに別の clang/gcc の不一致はありますか?
このコードが GCC (4.9 および 5+) でコンパイルされるのに、clang (3.5-3.9) ではコンパイルされないのはなぜですか?
不一致が ODR (One Definition Rule) の使用に関係しているという漠然とした考えがありますが、ここで何が起こっているのかを理解するのに十分ではありません。
android - Android.mk でビルドされたアーカイブで ranlib を実行するには?
これは、私が定期的に使用しているいくつかのライブラリで発生しました。たとえば、次を参照してください。
- エラー SSL アーカイブ シンボル テーブル (ranlib を実行)
- ndk-build を使用して libcryptopp.a をビルドする際に、アーカイブ シンボル テーブルがありません (ranlib を実行)
質問では、ユーザーは OpenSSL および Crypto++ ライブラリ用の Android.mk を作成しました。問題点は、ソースに Android.mk ラッパーを追加するユーザーにあるようです。
Android 以外では、各プロジェクトは Makefile ベースであり、各プロジェクトは静的アーカイブを構築し、各プロジェクトは静的アーカイブに基づいて共有オブジェクトを構築します。各プロジェクトもranlib
静的アーカイブで実行されます。ranlib
Crypto++ は、C++ ライブラリであり、1 つの定義規則違反が未定義の動作につながるため、特に必要性に敏感です。
Android.mk を使用して静的アーカイブを構築する場合、Android.mk を介してアーカイブで ranlib を実行するにはどうすればよいですか?