2009-06-26 11 views
0

私はVS 2008を使用してプレーンなバニラC++コンソールアプリケーションを作成しています。プロジェクトを作成すると、IDEから.netバージョンが選択できます。 「なし」のオプションはありません。プロジェクトのプロパティページを見ると、Targeted Frameworkには私が選択した値があり、グレー表示されています。VS 2008 C++ .net依存関係なしでプロジェクトを作る方法

私は、clrなしでWindowsマシンでアプリケーションを実行しようとすると、セットアップエラーが発生し、終了します。

私のコードには、.netとは何の関係もありません。どのように私は.netとclrのクラッチを逃れることができますか?

+0

エラーを解決することは良い方向の一歩かもしれませんが、それは何ですか? – Eric

+0

さらに興味深いことに、テキストビューアで実行可能ファイルを見ると、「このプログラムはDOSモードでは実行できません」という表記があります。だから私は私がする必要があることをすることができないと言います。 – Jon

+0

そのテキストは、すべてのwin32プログラムに表示されます.Windowsのコマンドプロンプトではなく、MS-DOSについてのことです。 MS-DOSではWindowsコンソールプログラムを実行できません。 – RichieHindle

答えて

2

は、あなたが "Win32コンソールアプリケーション" プロジェクトの種類を選択していることを確認してください。これはC++のみのプロジェクトを提供します。他のコンソールオプションのほとんどは、プロジェクトを.Netにバインドします。

+0

それがありました。ありがとう – Jon

5

どのようにプロジェクトを作成していますか? Visual Studio 2008を起動し、ファイル/新規/プロジェクト... /その他の言語/ Visual C++/Win32/Win32コンソールアプリケーションに移動すると、.netに依存しない普通の古いC++プロジェクトが得られます。あなたは右のソリューションエクスプローラでプロジェクトを右クリックし、プロパティ - >構成プロパティ - >一般に

を行けば

0

また、あなたは「共通言語サポート」欄はいいえ」に設定する必要があることを確認するために満たす必要がありますあなたが上記の助言に従っている、つまりclrなしでコンパイルしている場合は、「共通言語サポート」!

1

問題は(問題の下のあなたのコメントに基づいて).NETとは関係ありません。

問題は、Cランタイムライブラリにどのようにリンクするのかがよく考えられます。 Visual Studioでは、動的にリンクされた(dll)バージョンを使用することがデフォルト設定されています。つまり、ターゲットマシンにdllが存在する必要があります。

単純な修正点は、静的にリンクされたバージョンを使用するようにプロジェクトを変更することです。 プロジェクトのプロパティ - > C/C++ - >コード生成で、ランタイムライブラリをマルチスレッドまたはマルチスレッドデバッグに設定します(ではなく、マルチスレッド(デバッグ)DLL)。

または、プログラムと一緒にランタイムDLLを展開する必要があります。

0

Dependency Walkerを使用して、プログラムに必要なDLLを確認します。 .NETやRuntime、ATLのライブラリで問題が発生する可能性があります。静的リンケージを使用しましたか?

関連する問題