問題タブ [weak-linking]

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.

0 投票する
1 に答える
544 参照

c - __attribute__((weak) ) 関数は未定義の参照になります

現在、MinGW と CMake を使用して STM32 の単体テスト用に CMock をセットアップしようとしています。構成ファイルで、:weak: オプションを設定して、生成されたモックが弱い関数を提供するようにしました。一例は次のとおりです。

ただし、コンパイルすると、HAL_TIM_IC_Init エラーへの未定義の参照が表示されます。

属性を削除しweakても、未定義の参照エラーは発生しません。しかし、HAL レイヤーによって提供されるいくつかの関数をオーバーライドする必要があるため、モック ライブラリを弱いものにする必要があります。そうしないと、複数の定義エラーが発生します。

だから私の質問は、なぜ弱い属性が未定義の参照エラーを引き起こしたのか、どうすればそれを回避できるのでしょうか?