2

私は何日も回避策を探していました。これまでのところ運がありません。

私が使用するもの:

  • STM32F103VET6
  • Jリンク
  • RealView MDK-ARM v4.12
  • プログラム内の C コードと C++ コードの両方

コードに STL を含める前は、すべて正常に動作していました。問題なく USART にprintf()リターゲットできます。scanf()これはRetarget.c、RV-MDK に付属の をインクルードし、独自のsendchar()andを作成することによって行われgetkey()ます。には、セミホスティング実装を呼び出す代わりに、のリターゲット バージョンを使用するようリンカに要求Retarget.cする行があります。#pragma import(__use_no_semihosting_swi)<cstdio>

しかし、私が始めたとき#include <deque>deque<int> buffer;それはもう機能しません。リンカは<deque>セミホスティングに依存することを決定したようで、<cstdio>これは私が今書いたリターゲット コードと競合します。

私が試して失敗したこと:

  • を取り除き__no_semihosting_swi、代わりにオーバーライドしてみてください_sys_open()<cstdio>セミホスティングは、このシンボルを既にエクスポートしているオブジェクト ファイルに依存しているため、機能しません。
  • ここで提案されている使用法$super$$$sub$$構文(提供されたものはすべて試したと思います!)
  • 「マイクロLIB」を使用してください。エピックフェイルです。
  • 提供された STL ヘッダーを掘り下げます。への参照は見つかりませんstdioでした。そして、私#include <cstdio>はリターゲティングができるし、今でもできるので、リファレンスでさえ何の違いもないと思います。

解決策はリンカーの指示と関係があると思いますが、これまでのところ私は理解していません...これはとてもイライラしています!

4

0 に答える 0