3

小さな実行可能ファイルのコードを記述する必要があるプロジェクトがあります。Visual C++ Express 2010 IDE を使用してこのファイルを作成しました。コードを書き終えた後、それをいくつかの異なる PC にコピーしようとしました。このファイルをクリックして実行するたびに、エラーメッセージが表示されます。メッセージには、(.NET フレームワーク) をインストールする必要があることが示されています。YouTube で、ランタイム ライブラリをマルチスレッド デバッグ DLL (/MDd) からマルチスレッド デバッグ (/Mtd) に変更することでこの問題を解決する方法を説明しているビデオをいくつか見ました。でも; CLR テンプレートを使用してプロジェクトを作成すると、IDE は C++ コードをデバッグできません。この問題を解決する方法はありますか? 別の PC で使用する場合、ダウンロード不要の同様のプログラムを作成できますか?

JAVA や C# などの別の言語を学習すると、ほとんどの Windows プラットフォーム マシンで実行される小さなプログラム (私のプログラムのような) を作成するのに役立ちますか?

4

5 に答える 5

7

Qt を使用するだけで、Windows、Linux、MacOS で動作し、Android と iOS のサポートが今年予定されています。さらに、組み込みプラットフォームと、あまり知られていないモバイル プラットフォームの一部もサポートしています。また、Windows RT のサポートが開始されたばかりです。豊富な機能、優れたドキュメント、および多くの教育リソースを備えた完全なライブラリ。スレッド化、シグナルとスロット、2D および 3D グラフィックス、ウィジェット、マルチメディア、センサーなど、暗黙的に共有されたコンテナーから多数のツールを提供します...

LGPL ライセンスの下で商用アプリケーションを開発することもできます。

また、かなり優れた IDE - Qt Creator も付属しています。

標準の C++ アプリケーションを開発することも、QML を使用することもできます。QML は、マークアップおよびスクリプト用の JavaScript に似た言語であり、C++ 実装コンポーネントからアプリケーションを構築するために使用されます。QML を拡張することもできます。QML を使用して開発する方がはるかに高速であり、内部でプラットフォーム ネイティブ バイナリの利点を引き続き得ることができます。

アプリケーションにいくつかの DLL を同梱する必要があることに注意してください。もちろん、アプリケーションをオープンソースにするか、商用ライセンスを購入する必要がある静的ビルドを使用しない限り...安くはありません...

それでも、数 MB の DLL は、.NET フレームワーク全体よりもはるかに優れています。静的ビルドでは、約 8 ~ 9 MB の実行可能ファイルが生成され、外部依存関係はありません。

于 2013-02-22T07:39:17.030 に答える
3

C++ 標準に固執し、Microsoft 拡張 (マネージ コード) を避け、OS の POSIX 関数のみを呼び出すと、移植可能なプログラムを作成できるはずです。

于 2013-02-22T07:21:36.640 に答える
1

を作成したようですManaged C++ Project。代わりに空のファイルを作成してWin32 C++ projectから、.cpp/.h ファイルを追加してください。これにより、C++ ランタイムを使用するすべての PC で使用できる既定のライブラリに制限されます。その依存関係も削除したい場合は、/MTオプションを使用してランタイムで静的にコンパイルします。詳細 @ http://msdn.microsoft.com/en-us/library/2kzt1wy3(v=vs.71).aspx

先に進むにつれて、どのライブラリに依存するか、それらのライブラリが利用可能な OS のバージョン、またはそれらをビットと一緒にパッケージ化する必要があるかどうかを意識する必要があります。

于 2013-02-22T07:37:47.890 に答える
0

Java と C# の両方が、移植可能なプログラムの作成に役立ちます。ただし、通常、これら 2 つの言語で記述された実行可能ファイルのランタイム環境をインストールする必要があります。最近では、C++ はかつてないほど移植性が向上しています。ブラウザで C++ 実行可能ファイルを簡単に実行できます。

https://github.com/kripken/emscripten

http://code.google.com/p/nativeclient/

これにより、Java と C# が無関係になった理由の多くが成り立ちます。

また、OpenGL などのオープン スタンダードにより、移植性の高い GUI プログラミングがかつてないほど容易になります。C++ で簡単な GUI を書きたい場合は、Qt を試してみてください。

于 2013-02-22T07:31:12.223 に答える
0

注: .NET Framework を使用していない場合は、何もインストールしなくても、任意のコンピューターで C++ プログラムを実行できます。あなたの場合、ターゲット コンピューターでエラーを引き起こす 2 つの理由が考えられます。

  1. 新しいコンピューターには、必要なランタイム アセンブルがありません。
  2. 新しいコンピューターには、必要な .NET フレームワークがインストールされていません。

...................................................

じゃあ何をすればいいの:

  1. プログラムを開始する前に、.NET フレームワークのサポートを使用するかどうかを設計する必要があります。プログラムを開発するときに .NET Framework を使用する場合は、同じかそれ以上の .NET Framework をターゲット コンピューターにインストールする必要があります。

  2. .NET コンポーネントを使用する必要がない場合は、ターゲット コンピューターにランタイム アセンブリのみを含める必要があります。.net フレームワークを取り除く方法

    • ソリューションのプロジェクトを右クリック -> プロパティ -> 一般 -> 共通言語ランタイム サポート -> [共通言語ランタイム サポートなし] を選択します。

...................................................

次に、必要なのは、関連するランタイム アセンブリのみがターゲット コンピューターにあることです。

ランタイム アセンブリを新しいコンピューターに配置する方法:

次の 2 つの方法があります。

  1. ターゲット コンピューターに適切な C++ の議論可能な環境をインストールします (VS2008 SP1 を使用する場合、C++ RD パッケージはこれである必要があります。ダウンロードする前に、ソリューション ビルド アーキテクチャ (32 ビット/64 ビット) も考慮してください)。

  2. ソリューション パッケージを使用してランタイム アセンブリを展開します。(ユーザーがサードパーティのコンポーネントをインストールする必要がないため、これが気に入っています)

...................................................

プロジェクトでアセンブリを展開する方法:

  1. このため、すべての DLL、LIB、EXE は同じランタイム バージョンを使用する必要があります (そうでない場合は、「マニフェスト」ファイルによってアセンブリをリダイレクトするという問題に直面します)。

  2. ランタイム バージョンを確認する方法。Visual Studio で DLL、EXE を開きます (開く -> ファイル) -> RT_MANIFEST を展開します -> その下のファイルをダブルクリックします -> アセンブリの依存関係の詳細が開きます。-> 右側の列のデータをコピーしてメモ帳に貼り付けます。

そこにこのような線が見えます。そして、特定の DLL または EXE が使用するランタイム アセンブリのバージョンです。

assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86".....

ランタイム アセンブリのバージョンを特定したら、このチュートリアルに従って、新しくインストールしたコンピューターで実行してみてください。

最後に:この bla.. bla.. が非常に複雑で、プログラムが非常に単純であると思われる場合は、「ランタイム アセンブリの静的リンク」について検討できます (Google を試してください)。しかし、個人的にはこの方法は好きではありません。

幸運を!

于 2013-02-22T09:46:32.667 に答える