問題タブ [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.

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

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]) の参照パラメーターへの一時的なバインドは、呼び出しを含む完全な式が完了するまで持続します。

これは、呼び出し環境が範囲外になるまで存続する必要があることを意味します。これは、関数が戻った後です。それで、何が得られますか?他のすべての場合、次の例外を除いて、変数は「最適化されずに」取得されます。

解決策は明らかですが、ユーザーが他のライブラリのようにポインターベースの転送で一時ファイルを直接渡さないようにします。ビューを詰まらせずに、実際にはもう少しエレガントにすることを望んでいました.

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

c++ - デフォルトですべてのシンボルをエクスポートする GCC とデフォルトで何もエクスポートしない MSVC の間の設計上の根拠は何ですか?

C++ コンパイラ GCC と MSVC の多くの重要な違いの 1 つは、共有ライブラリの最初のすべてのシンボルがデフォルトでエクスポートされるのに対し、MSVC は何もエクスポートしないことです。

いくつかの意味は、MSVC では明示的にインスタンス化されたテンプレート クラスをエクスポートする必要があるということです。

私はこれを現実として受け入れていますが、各アプローチのコンパイラ設計者の観点などから、設計への影響、トレードオフは何ですか?

0 投票する
3 に答える
14377 参照

msvc12 - Visual Studio 2013 で「エラー MSB4018: "VCMessage" タスクが予期せず失敗しました」を修正する方法

これは私が見るものです:

GoogleおよびSO検索にリストされているソリューションは提供されません(末尾のスラッシュを削除する、デフォルト$(OutDir)または$(TargetDir)パスに戻すなど)。


環境

これは、MSVC2012 から移行されたいくつかのプロジェクトに関するものです。同じ MSVC2012 環境から移行された同じプロジェクト/ソリューション レイアウトの他のプロジェクトは瞬きしませんでしたが、一部のプロジェクトではこのエラーが発生し、コンパイル/ビルドの成功が妨げられました。

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

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.pythonaddress-model=64boost.python

私は何か見落としてますか?インストーラーはpythonバグっていますか?(似たような問題を見つけました)...

正直なところ、いろいろ試しましたが、Windows の開発環境にもあまり慣れていないので、何か見落としているかもしれません。

ありがとう!

0 投票する
2 に答える
40 参照

c++ - MSVC Debugger は、私のベクトルが指定されたよりも多くの位置を持っていることを教えてくれます

私は次のことを宣言しました。

ただし、MSVC デバッガーを開くと、次のように表示されます。

ここに画像の説明を入力

これは、ベクトルに値を追加する方法です。

これは正常ですか?これを無視してもいいですか?それともこれは問題ですか?

完全なコード (プログラムはまだ準備ができていません):

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

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 ビルドを入手するにはどうすればよいですか?