Visual Studio Pro 2012 の Visual C++ 2012 でネイティブ コード(マシン語)を作ったつもりなのですが、他のコンピューターで動きません。詳細を以下に記しますので、皆様のアドバイスをお願いします。
VS 2012 インストール環境:Windows 7 Ultimate 64ビット
VC++ プログラム:秀和システム発行 「Visual C++ 2010」 47ページに記載されているコンソールアプリケーション用の次のプログラム
#include “stdafx.h”
#include <iostream>
using namespace std;
int main()
{
cout << “Hello World!”
return 0;
}
動作時の現象
1.VS 2012 をインストールしてあるPCでは問題なく正常動作します。
2.VS 2012 をインストールしてない別のPC2台(Windows 7 Ultimate 64ビット)では、次のメッセージが表示され、動作しません。
「コンピューターに MSVCP110D.dll がないため、プログラムを開始できません。この問題を解決するには、プログラムを再インストールしてみてください。」
3.Windows PE 3.1 で起動した別のPCでは次のメッセージが表示されます。
「この種類のイメージのサポートに必要なサブシステムがありません。」
2と同じことを言っているようです。
MSVCP110D.dll は、VC++ のインストールで sytem32 フォルダーに3種類のCPU (x86、x64など)用のファイルが自動的にインストールされています。
私の感覚で一番疑わしいのは、正しいネイティブ コードが出力されていないのではないかと考えるのですが、上記秀和システム発行の図書の、38ページで「・・・ネイティブプログラミングをメインに解説し、巻末でC++/CLIプログラミングの解説を行う」と書いてあるので、図書の指示に従えば、マシン語のプログラムが完成するものと考えられます。
次に疑わしいのは、私の誤解による間違いです。
状況は以上の通りです。私の能力では、解決不可能です。経験者のご支援をお願いします。
No.2ベストアンサー
- 回答日時:
突っ込みどころ満載なんで総スルーして問題だけ解決します。
以下のURLでダウンロードできる「再頒布可能パッケージ」を、動かすPCにインストールしてください。
VC2010の無印かSP1か、またx86(32bit)かx64(64bit)かで分かれています。
無印 32bit
http://www.microsoft.com/ja-jp/download/details. …
SP1 32bit
http://www.microsoft.com/ja-jp/download/details. …
無印 64bit
http://www.microsoft.com/ja-jp/download/details. …
SP1 64bit
http://www.microsoft.com/ja-jp/download/details. …
okgoriponさん、ご親切な回答ありがとうございます。
私の理解不足を痛感しました。「Visual C++ 再頒布可能パッケージ」の文言は何度か目にしたことがありますが、全く気にしていませんでした。
VC++ で作成したモジュールをそのまま配布(コピー)すれば動くのだと思い込んでいました。
ご親切に感謝します。
No.5
- 回答日時:
そこで言っている「ネイティブコード」ってのは、.NetFrameworkとかを使用しない。
って意味でしかありません。
マシン語で~という言い方はさらに正しくありません。
マシン語とか言ったらハンドアセンブルなりして16進の羅列になりますよ。
せいぜいアセンブリ言語じゃないですかね?
んで、掲示されているのはただのC++言語です。
VS2012がインストールされていない環境で動かない。
ってのは既に回答されているようにランタイムライブラリがインストールされていないからです。
VSのバージョン毎にインストールが必要になるもので…毎回こういう質問が出てくるくらいおなじみなネタです。
んで、やはり既に回答がありますが、「デバッグ版」は他の環境へ持って行くのは正しくありません。
# DLLだけコピーして~とかやろうとする人もいますが、デバッグ版のDLLを勝手に他のマシンにコピーするのはライセンス上問題があったかと。
リリース版でビルド(添付画像でReleaseを選択してビルド)して、対象PCにはランタイムを別途インストールする。
と言うのが正しいです。
No.4
- 回答日時:
やりたいことは、ネイティブプログラミングじゃなくコンソールアプリじゃないかと
Win用のネイティブプログラミングだと意味が違ってきますし、C++解説本の様なので
コンソールアプリで問題無いかと・・・
VC++入門 コンソールアプリケーションの作成(バージョンが古いですが)
http://mcn-www.jwu.ac.jp/~yokamoto/openwww/cpp/i …
マシン語とは、本当に16進数を書き込んでいく形になり、一般的にはマシン語と対になる
アセンブリ言語を使用します。
インラインアセンブラで学ぶアセンブリ言語 第1回
http://codezine.jp/article/detail/393
最近、Java中心なので何ともなのですがコンソールアプリだとMSVCP110D.dllは不要なはず・・
No.3
- 回答日時:
> Visual Studio Pro 2012 の Visual C++ 2012 でネイティブ コード(マシン語)を作ったつもりなのですが、
標準の設定だと、ライブラリの静的リンクは行なわれず、プログラムの実行時にライブラリを動的にリンク、参照する実行形式(.exe)が作成されます。
ダイアログとか文字列の標準出力とかの処理をそういう共通モジュールに行なわせ、プログラムのサイズを小さくするなんかのメリットがあります。
ネイティブコードって定義が不明瞭ですが、dll無しに動作する実行形式を作成するためには、自分はVS2012は持ってないですが、プロジェクトの設定でそういう物を静的リンク、スタティックリンクする設定に変更する必要があるハズ。
> 2.VS 2012 をインストールしてない別のPC2台(Windows 7 Ultimate 64ビット)では、次のメッセージが表示され、動作しません。
最近のWindowsは標準でVC++用のランタイムが入ってないそうなので、そちらをインストールする必要があります。
Visual Studio 2012 更新プログラム 1 の Visual C++ 再頒布可能パッケージhttp://www.microsoft.com/ja-jp/download/details. …
| Visual C++ 再頒布可能パッケージは、Visual Studio 2012 を使用して開発されたアプリケーションを Visual Studio 2012 がインストールされていないコンピューター上で実行するために必要な、Visual C++ ライブラリのランタイム コンポーネントをインストールします。
> 「コンピューターに MSVCP110D.dll がないため、
VC++6.0とかの話だと、△△△D.dllはデバッグ用のdllです。
通常のVC++ランタイムをインストールしても、デバッグ用のランタイムまでは入りません。
リリース用の実行形式を使ってください。
neKo_deuxさん、ご親切な回答ありがとうございます。
私の理解不足を痛感しました。「Visual C++ 再頒布可能パッケージ」の文言は何度か目にしたことがありますが、全く気にしていませんでした。
VC++ で作成したモジュールをそのまま配布(コピー)すれば動くのだと思い込んでいました。
ご親切に感謝します。
No.1
- 回答日時:
それってマシン語じゃないんだけど。
VCでマシン語書きたければ、本当にマシン語で書かないとだめじゃないの?
VCなので当然ランタイムが必要になります。
この回答への補足
masatsan、回答ありがとうございます。Visual Studio は、Microsoft で唯一のネイティブ コード(マシン語)の作れるIDEと言われています。VC++は、.NetFramework 用のCLI(masatsanの言われるランタイム)を利用したアプリケーション開発用としての利用が主流ですが、アンマネージのC環境も含まれており、マシン語プログラムも作れる特徴が1つの売りになっていると解釈しています。このことは、有名な『猫でもわかる・・・』にも記載されており、間違いないと思います。
ネイティブ コードに挑戦するのは、初めてなので、私も経験がありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CloverをインストールしたUSBメ...
-
PCゲーム Hard☆Love☆Life
-
WiFi環境があればTikTokLiteは...
-
iniファイル読み込み失敗という...
-
AnyDVDとレジストリKey
-
昔のゲーム(95,98対応)...
-
いきなりPDF professional3に...
-
PC版GTA4が起動できません
-
Animation Composer 3について
-
ウィルスバスター2004がインス...
-
Windows Storeを使わずに付箋を...
-
UltraVNCでマルチモニタ環境で...
-
東方紅魔郷
-
倒産した18禁ゲーム会社のパ...
-
スカイリム デイドラクエスト「...
-
oracle sql developerについて
-
デッドバイデイライトで遊びた...
-
パッチの当て方がわからないの...
-
ソケット通信で接続クライアン...
-
Microsoft ODBC For Oracle の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
.NET Frameworkがコントロール...
-
Windows Storeを使わずに付箋を...
-
CloverをインストールしたUSBメ...
-
無料プラグインSSD5について教...
-
WiFi環境があればTikTokLiteは...
-
PCゲーム Hard☆Love☆Life
-
イラストレーターで数式を表現...
-
AnyDVDとレジストリKey
-
一太郎ダウンロード版と箱に入...
-
ドミノサーバーって?
-
Quicktimeがインストールできない
-
Windowsインストーラーmsiファ...
-
VNCについて
-
iniファイル読み込み失敗という...
-
e-photo
-
ファイルの暗号化でフリーソフ...
-
いきなりPDF professional3に...
-
オートメーションエラー(開発...
-
VMware player15にwindows98SE...
-
Adobe CS5.5 インストールエラー
おすすめ情報