問題タブ [visual-c++-2019]
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++ - boost::array と std::array から std::string::assign を使用する非互換性
一部のレガシー コードは次のようになります。
std
C++ 17 に更新するときに同等のものを使用するようにコードを更新しています。直接の置き換えboost
だと思っていarray
ましたが、これを試すとコンパイル エラーが発生します。
エラー C2664: 'std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>> &std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>> ::assign(std::initializer_list<_Elem>)': [ _Elem=wchar_t ] および [ _Ty= を使用して、引数 1 を 'std::_Array_iterator<_Ty,2001>' から 'std::initializer_list<_Elem>' に変換できませんwchar_t ] および [ _Elem=wchar_t ]
コードベースのかなりの場所でこのパターンを使用していますが、些細な修正はありますか? boost::array
具体的にはとwhichの違いは何ですか?std::array
これは、ドロップイン交換とは見なされないことを意味しますか?
(私がこのコードを書いたわけではありません。また、なぜ単に を使用しないのかわかりませんwchar_t[]
。おそらく、作成者はブーストの「新しい」機能が気に入っただけです。)
c++ - .qmake.stash ファイルがありません
.qmake.stash ファイルを作成するのは誰ですか? いつ作成されますか?
私は Visual Studio で Qt を使用して Windows アプリケーションを作成して数年になりますが、このファイルを気にする必要はありませんでした。しかし、ARM64 で Linux 用のアプリケーションをビルドするために、WSL 1 を使用して Visual Studio でクロス コンパイルをセットアップしました。開発用コンピューターの VS ソリューションですべてのプロジェクトをビルドできます。現在、このクロス コンパイル システムを別の PC にセットアップしようとしています。このソリューションの最初のプロジェクトは問題なくビルドできましたが、2 番目のプロジェクトは失敗しました。
プロジェクトファイルと構成を比較して何時間も調査した結果、理由を見つけることができました.qmakeは、Makefileを作成する必要があるときにファイル.qmake.stashを見つけられませんでした。
作業中のプロジェクトには、中間出力パス $(IntDir) /obj//<vs_configuration> (例: myproject/obj/x64/RelArm64) に .qmake.stash ファイルがあります。失敗したプロジェクトの $(IntDir) にこのファイルがありません。このファイルを作業中のプロジェクトから他のプロジェクトに手動でコピーすると、それも機能します。
qmake を実行する前に、誰がこのファイルを $(IntDir) に置くべきでしたか?
作業中のプロジェクトの qmake.stash ファイルはかなり古いものです。そのため、すべてのビルドプロセス中に生成されないようです。