2016-11-22 2 views
0

私がしようとしたとき、私は、2015年コンパイルされたプログラムは、他のウィンドウ上での応答を停止し、PCの

しかしVisual Studioでスタンドアロンの実行可能ファイルとしても、私のPC上で完璧に動作します14 VC++でプログラム、およびデバッグを書かれていますそれを別のPCで実行するには、即座に応答を停止します。デバッグシンボルを使用して、make_unique、またはmake_sharedでクラスのインスタンス化が失敗し、nullポインタ例外が発生しました。

ターゲットマシンに必要なvC++ランタイム環境があり、他にも考えられるdllが含まれていることを確認し、確認しました。

ビルド中に必要なライブラリを静的にリンクしようとしましたが、改善はありませんでした。

私はさらに依存関係を検出しなかったインストーラプロジェクトを試みました。

私は今失業しています。私が探していなければならないものは他にありますか?

+0

マシン上でリモートデバッガを実行できますか?あなたは 'make_unique'に何を渡していますか? – Dai

+2

ターゲットプラットフォームがあなたと同じであることを確認してください。たとえば、64ビット対32ビット – SomeWittyUsername

+0

@Dai引数は渡されません。m_States [0] = std :: make_unique ();などの基本的なインスタンス化です または、少なくともそれはデバッガが示すものです。リモートデバッグについて詳しく教えてください。 –

答えて

0

以下を確認してください。

  1. リリースビルドを構築していることを確認してください。ビジュアルスタジオがインストールされていないPCでデバッグビルドを実行するのは比較的困難です。
  2. サービスパック番号を含む、正確なバージョンのvC++ 14ランタイムを持っていることを確認してください。 vs2015アップデート3を使用している場合は、これをターゲットPCにダウンロードしてインストールしてください:https://www.microsoft.com/en-us/download/details.aspx?id=53587(正しいプラットフォーム、32または64)
  3. あなたはプリプロセッサで面白いものを持っていないことを確認していない:あなたは_DEBUGを持っていないこと、ない_SECURE_SCLを、など

P.S. Cのランタイムへのダイナミックリンクは、リリースビルドのための良いアイデアではありません。 1つの問題は、一部のWindowsバージョンでは、最近のCRTが一部のWindowsアップデートに依存するため、オフラインインストーラを使用してもCRTを必要なバージョンに更新できません。

+0

私は間違いなくリリースモードで構築しています。 サービスパック番号の情報を調べる必要がありますが、そうであると仮定すると、ターゲットシステムにこれがインストールされていることを確認できる方法がありますか? 私は、前処理プロセッサにNO_SECURE_CRTがあると確信しています。これは問題を引き起こす可能性がありますか? –

+0

申し訳ありません、プリプロセッサにCRT_SECURE_NO_WARNINGSがあります。それ以外はすべて標準です。 –

+0

CRT_SECURE_NO_WARNINGSプリプロセッサディレクティブが不要になるように、コードを削除してリファクタリングしました。そこには変更はありませんが、参照マシンがcv ++ 2015の再配布可能ファイルで少し遅れていることが判明しました。 –

関連する問題