問題タブ [msvc12]
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++ - 関数の引数が一時変数または値によってコピーされた一時変数への const 参照である場合、MSVC 最適化によって SSE コードが壊れるのはなぜですか?
昨日これに遭遇しました。MSVC12 (VS2013, 120)およびMSVC14 (VS2015, 140)で失敗する明確で単純な例を挙げようとします。x64 ではすべてが暗黙的に /arch:SSE+ です。
説明のために、定義されたマクロ _MM_TRANSPOSE4_PS を使用して、この問題を単純な行列転置の例に単純化します。これは、L/H 8 バイト ブロックを移動するのではなく、シャッフルの観点から実装されています。
これmatrix4x4
は、4 つのメンバーを含む単なる POD 構造体__m128
であり、多少暗黙的ではありますが、すべてが 16 バイト境界に整然と配置されています。
これはすべて、/O1、/O2、および /Ox で失敗します。
不思議なことに、これは機能します:
ポインターベースの転送についても同じことが言えます。これは、基になるメカニズムが同じであるため論理的です。C++11 仕様の関連部分は §12.2/5 です。
2 番目のコンテキストは、参照がテンポラリにバインドされる場合です。参照がバインドされている一時オブジェクト、または一時オブジェクトがバインドされているサブオブジェクトへの完全なオブジェクトである一時オブジェクトは、以下に指定されている場合を除き、参照の存続期間中存続します。コンストラクターの ctor-initializer (§12.6.2 [class.base.init]) 内の参照メンバーへの一時的なバインドは、コンストラクターが終了するまで持続します。関数呼び出し (§5.2.2 [expr.call]) の参照パラメーターへの一時的なバインドは、呼び出しを含む完全な式が完了するまで持続します。
これは、呼び出し環境が範囲外になるまで存続する必要があることを意味します。これは、関数が戻った後です。それで、何が得られますか?他のすべての場合、次の例外を除いて、変数は「最適化されずに」取得されます。
解決策は明らかですが、ユーザーが他のライブラリのようにポインターベースの転送で一時ファイルを直接渡さないようにします。ビューを詰まらせずに、実際にはもう少しエレガントにすることを望んでいました.
c++ - デフォルトですべてのシンボルをエクスポートする GCC とデフォルトで何もエクスポートしない MSVC の間の設計上の根拠は何ですか?
C++ コンパイラ GCC と MSVC の多くの重要な違いの 1 つは、共有ライブラリの最初のすべてのシンボルがデフォルトでエクスポートされるのに対し、MSVC は何もエクスポートしないことです。
いくつかの意味は、MSVC では明示的にインスタンス化されたテンプレート クラスをエクスポートする必要があるということです。
私はこれを現実として受け入れていますが、各アプローチのコンパイラ設計者の観点などから、設計への影響、トレードオフは何ですか?
msvc12 - Visual Studio 2013 で「エラー MSB4018: "VCMessage" タスクが予期せず失敗しました」を修正する方法
これは私が見るものです:
GoogleおよびSO検索にリストされているソリューションは提供されません(末尾のスラッシュを削除する、デフォルト$(OutDir)
または$(TargetDir)
パスに戻すなど)。
環境
これは、MSVC2012 から移行されたいくつかのプロジェクトに関するものです。同じ MSVC2012 環境から移行された同じプロジェクト/ソリューション レイアウトの他のプロジェクトは瞬きしませんでしたが、一部のプロジェクトではこのエラーが発生し、コンパイル/ビルドの成功が妨げられました。
python - Py_NoneStruct シンボル (python、boost.python) はどこにありますか?
main.cpp
を含む単純なものをコンパイルしようとしていますboost/python.hpp
。
次のように:
git-bash
シェルから MSVC コマンド ライン ツールを使用しています。にcl.exe
ある環境変数が必要であることはわかっていvcvars32.bat
ます。
これが私のコンパイル/リンク方法ですmain.cpp
:
私がこれを行っているとき、これはリンクエラーで終わります:
そこで、python27.lib
ファイルをチェックして、不足しているシンボルがここにあるかどうかを確認することにしました。
なし!!
しかし、シンボルは私の中にありますlibpython27.a
:
インストーラー(64ビット)python
を使用してインストールしました。私は良い.msi
と構築しました。ビルド用の CLI は次のとおりです。boost.python
address-model=64
boost.python
私は何か見落としてますか?インストーラーはpython
バグっていますか?(似たような問題を見つけました)...
正直なところ、いろいろ試しましたが、Windows の開発環境にもあまり慣れていないので、何か見落としているかもしれません。
ありがとう!
c++ - MSVC Debugger は、私のベクトルが指定されたよりも多くの位置を持っていることを教えてくれます
私は次のことを宣言しました。
ただし、MSVC デバッガーを開くと、次のように表示されます。
これは、ベクトルに値を追加する方法です。
これは正常ですか?これを無視してもいいですか?それともこれは問題ですか?
完全なコード (プログラムはまだ準備ができていません):
boost - 2>リンク: 致命的なエラー LNK1104: ファイル 'libboost_filesystem-vc120-mt-sgd-1_58.lib' を開けません
にそのようなファイルがないのも不思議ではありません...\boost_1_58_0\stage\lib
。どうすれば入手できますか? わたしは〜しか持っていない:
そこで。取得するために、さまざまなオプションを使用してブーストをコンパイルしようとし ました( 「libboost_filesystem-vc100-mt-s-1_49.lib」を使用したリンカーエラーLNK1104--build-type=complete
からの「貧弱な」ソリューション)。
私がインポートしているプロジェクトのreadmeでコマンドラインが提案されています-まだ喜びはありません。これは、MSVS ソリューションを構築するのに苦労した CMake プロジェクトです。
注意: CMake の GUI を注意深く見ると、私の問題は解決されました。
ビルドされなかったのはデバッグ構成であることに気付きました。「ソリューション」>構成マネージャーを右クリックして、リリースビルドに変更すると、すべて問題ありませんでした。libboost_filesystem-vc120-mt-sgd-1_58.lib ビルドを入手するにはどうすればよいですか?