2016-08-18 19 views
-1

私はいくつかのテキストファイルを解析し、そのレコードをSQL Serverデータベースに挿入する非常に単純なアプリケーションを持っています。アプリケーションの依存関係がありませんか?

cmr->dateTimeStamp = TIMESTAMP_STRUCT { }; 

それだから私には、どちらかTIMESTAMP_STRUCTに関連する欠落している依存関係がありますを意味し、こと:「それは、私の作品」が、別のマシン上で実行した場合、それは、次の行にクラッシュ

これまでに登場していなかったその行の唯一のものである。

TIMESTAMP_STRUCTとSQLUSMALLINTはsqltypes.hで定義されていますが、これらはtypedefであるため、そこに依存関係は存在しません。

ターゲットマシンにSQL Serverネイティブクライアント11とVisual C++ランタイムをインストールしました。

他に何が欠けていますか?

Visual Studio 2015、ターゲットマシンはWindows Server 2008 R2です。

両方のマシンで同じ入力ファイルを使用していますが、1台のマシンでのみ失敗します。

+0

問題の原因となっている部分が何であるか把握することはできませんか?例外を処理してエラーをキャプチャし、アプリをより正常に終了することは可能ですか? – techspider

+0

'cmr'はおそらく以前のエラーからNULLです。リモートデバッガを(アプリケーションがクラッシュしているマシン上に)インストールし、開発マシンからテスト/リリースマシンにリモートデバッグすることで、エラーを見つけることができます。 FYI:欠落している依存関係については、何が欠けているかを正確に伝える素敵なダイアログが表示されます。 –

+0

C APIの例外には何度も誤解を招くような記述があります。私は時々MFC層を使用しています。あなたは何を持っているのですか? –

答えて

0

問題はコンパイラフラグになりました。

このプロジェクトは、全く関係のない、AVXの指示があったもののためのおもちゃアプリケーションとして開始されました。その命令セットをターゲットとするフラグは、「実際の」アプリケーションになったときには決して解除されませんでした。

コンパイラフラグ(/ arch:AVX)を削除すると、プログラムは両方のマシンで動作します。 私にとって奇妙なことは、とにかくこのプログラムでAVX命令がないということです。なぜなら、フラグが設定されていると、2つのマシン間で実行の違いが生じるのでしょうか?特に、プリミティブ型からなる構造体の初期化

+0

どうやってこれを決めましたか?あなたはassyコードを見ましたか? – doug

+0

具体的に何を決める? – dodexahedron

+0

私はそこに置くので、おもちゃのアプリケーションにはAVX命令がありました。特定のコードに及ぼす影響をテストしていました。現在のアプリケーションに影響を与えるコンパイラフラグを知るにはどうすればよいですか?私はフラグをつけて1回、フラグをつけて1回走ったからです。現在のアプリケーションにAVX命令がないことをどのように知ることができますか?コンパイラが便宜的にそれらのフラグを使用しているのであれば、そうではないと思います。私はどこでどのように使用されるのかわかりませんが、VSからのアセンブリ出力にはAVX命令が表示されないので、私は迷っています。 – dodexahedron

関連する問題