C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: ランタイム無しで起動する・・・


(過去ログ 140 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■82053 / inTopicNo.1)  ランタイム無しで起動する・・・
  
□投稿者/ コンパイラー初心者 (1回)-(2016/12/02(Fri) 20:16:39)

分類:[C++/CLI] 

Visual Studio 2015 で C++/CLI フォームアプリケーションを作成しています。

先日、ようやく完成して知り合いのパソコンで起動しようとしたら

ランタイムvcruntime140.dllが見つかりません、とエラーが出て起動しませんでした。

ランタイム無しでなんとか起動できるようにしたいなあ、と思い、

プロジェクトのプロパティとかいろいろいじったりしていましたが、

ビルドの構成マネージャーでソリューション構成をReleaseに設定変更すると、

変なDOS窓が横で開きながらランタイムの入っていないパソコンでも起動できました。


とりあえず起動できたのでほっとしているのですが、変なDOS窓が気になってます。

DOS窓の起動なしにアプリケーション起動させることはできるのでしょうか?


そもそもC#でアプリケーション作っていた頃はランタイム無しで起動していたりしたので

何も気にすることはなかったのですが、、、またC#言語で作り直そうかとも思ってます。


どなたかランタイム無しで起動する方法、DOS窓の起動なしに本体起動する方法、

知っている人いたら教えてください。 宜しくお願い致します。
引用返信 編集キー/
■82054 / inTopicNo.2)  Re[1]: ランタイム無しで起動する・・・
□投稿者/ Jitta (232回)-(2016/12/02(Fri) 20:35:55)
No82053 (コンパイラー初心者 さん) に返信

https://msdn.microsoft.com/ja-jp/library/2kzt1wy3.aspx
引用返信 編集キー/
■82056 / inTopicNo.3)  Re[1]: ランタイム無しで起動する・・・
□投稿者/ Azulean (741回)-(2016/12/02(Fri) 22:20:52)
No82053 (コンパイラー初心者 さん) に返信
> Visual Studio 2015 で C++/CLI フォームアプリケーションを作成しています。
(略)
> ランタイム無しでなんとか起動できるようにしたいなあ、と思い、

C++/CLI でランタイムなしで起動は無理です。
「D8016: コマンド ライン オプション '/clr' と '/MT' は同時に指定できません」となるので、必ず Visual C++ ランタイムが必要です。


> とりあえず起動できたのでほっとしているのですが、変なDOS窓が気になってます。
> DOS窓の起動なしにアプリケーション起動させることはできるのでしょうか?

// 現状、「コマンドプロンプト」や「コンソール」と呼ぶのが正しいと思います。

そのように作ったと言うことはありませんか?
C++/CLI のプロジェクトをどのように作ったか次第ですが、もし、コンソールアプリケーションとして作り始めたのであればそれが原因です。


> そもそもC#でアプリケーション作っていた頃はランタイム無しで起動していたりしたので
> 何も気にすることはなかったのですが、、、またC#言語で作り直そうかとも思ってます。

そもそも、C++/CLI で Windows Forms アプリケーションを作ることはすでに非推奨となっています。
また、C# で作ったとしても .NET Framework は必要です。最近の Windows にはほぼ入っているので意識しないかもしれませんが…。
引用返信 編集キー/
■82066 / inTopicNo.4)  Re[2]: ランタイム無しで起動する・・・
□投稿者/ とっちゃん (409回)-(2016/12/05(Mon) 13:37:35)
No82053 (コンパイラー初心者 さん) に返信
> Visual Studio 2015 で C++/CLI フォームアプリケーションを作成しています。
>
すでに Azulean さんからも指摘がありますが、Visual Studio 2015 では
C++/CLI フォームアプリケーションの作成は非推奨になっています。
一応チェックしてみましたが、新規作成のC++の項目には
「フォーム」と名の付くプロジェクトはありませんでした。

もし、古い環境で C++/CLI のフォームプロジェクトをVS2015にコンバートしている
ということであれば、別ですがそれ以外の場合では作れないと思います。

新規テンプレートがないだけなので、既存のプロジェクト構成をコンバートしたり
空のプロジェクトから作っていけば作成は可能ですが

C++/CLI は、.NET Framework ランタイム(4.5以上を推奨します)と、VC++ランタイムの
両方が必要になります。

.NET Framework は、今時のWindowsならデフォルトでインストールされていると思いますが
VC++ランタイムはそうではないので別途インストールが必要ということでしょう。


なお、本当にC++/CLI のフォームアプリ形式なのであれば
プロジェクトのプロパティをいじって「変なDOS窓」が出ることはあっても
ランタイムなしで実行できるように「コンパイル」することはできません。


> 先日、ようやく完成して知り合いのパソコンで起動しようとしたら
>
> ランタイムvcruntime140.dllが見つかりません、とエラーが出て起動しませんでした。
>
> ランタイム無しでなんとか起動できるようにしたいなあ、と思い、
>
> プロジェクトのプロパティとかいろいろいじったりしていましたが、
>
> ビルドの構成マネージャーでソリューション構成をReleaseに設定変更すると、
>
> 変なDOS窓が横で開きながらランタイムの入っていないパソコンでも起動できました。
>

すでにその環境に必要なランタイムがあるという形でビルドすることはできるかもしれません。
なので、これが本当なら、プラットフォームツールセットを変更したのだと思います。
これを変更しただけなら、DOS窓が出てくることは「たぶん」ないと思います。



> そもそもC#でアプリケーション作っていた頃はランタイム無しで起動していたりしたので
>
> 何も気にすることはなかったのですが、、、またC#言語で作り直そうかとも思ってます。
>
フォームアプリをC#で作れるなら、無理してC++を使わずに C# で作ればいいと思います。
もしくは、知り合いのパソコンにあらかじめVCランタイムをインストールしておいてもらいましょう。


> どなたかランタイム無しで起動する方法、DOS窓の起動なしに本体起動する方法、
>
> 知っている人いたら教えてください。 宜しくお願い致します。

上にも書いたように C#やVB、あるいは C++/CLI で作った Windowsのデスクトップアプリ(現在はクラッシックWindows アプリと呼ぶ)の場合
.NET Framework というランタイムが必要になります。

環境とビルド構成によっては、起動時に .NET Framework のバージョンが違うなどで起動を制限されることもあります。

これに加えて C++/CLI の場合は、ビルド条件に応じて、VC++ランタイム(Microsoft Visual C++ Redistributable(x86)など)が必要になります。

VS2015であれば、VCランタイムは
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\1033
フォルダにあります。
vcredist_x86.exe は、32bit 版デスクトップ向けアプリ用
vcredist_x64.exe は、64bit 版デスクトップ向けアプリ用です。
vcredist_arm.exe というのもありますがこちらはデスクトップでは使わないので気にしなくてかまいません。

なお、C++/CLI は C# とは異なり、AnyCPU という状態がありません。
そのため、必ずどちらかになります。
32bit版は、プラットフォームが Win32 となります。
64bit版は、プラットフォームが x64 となります。
どれを渡すかに応じて上記のランタイムインストーラを一緒に渡してください。

もし、.NET Framework も、VC++ランタイムも必要とせずに動く Windowsアプリを作りたい
という場合は、プロジェクトを新規に
Win32 アプリケーション(MFCアプリケーションでもいいですが)で
作成することになります。

その時は、Jittaさんのリンク先にあるランタイムライブラリの指定(/MD /MT のやつ)で適切に変更してください。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -