• ベストアンサー

VC#2005で従来のWinアプリを作成するには?

Windows2000pro-sp4,VC#2005 Express Edtionを使用しています。 VS6の頃のような従来のWindowsアプリを作成するにはどうすればよいのでしょうか? メニューから、ビルド→...の発行、とたどり、 アプリの発行場所にデスクトップを選んで完了しても、 従来のように.exeファイルが作成されのではなく、 setup.exeや*.exe.manifest,.exe.deploy,.application などが作成されます。 古い記憶では、.NETな環境では、VC++のみが従来のようなWinアプリが作れる、 とあるのですが、そうなのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

基本的にはVC#で従来のWindowsアプリを作ることはできませんが、一つだけ方法があります。 それは、C#でEXEファイル生成するプログラムを開発し、それを用いて従来のWindowsアプリを作る方法です。 早い話が、アセンブラ(またはコンパイラ)とリンカ、あるいはコードジェネレータをC#で自作するしかないということです。この方法なら、極端な話、PerlやRubyやTclでもネイティブコードを生成できます。

bolaiskeok
質問者

お礼

レスありがとうございます。 そういう手もありますね。ですが相当高度で広範なしかもハード側の知識が必要そうですね。 もしよろしければぜひポインタを示して欲しいのですが、 コンパイラに関して、字句解析だとか解析結果をツリーにセットするだとかそういった方面ではなくて、アセンブラのコードを吐く部分に関する知識が欲しいのですが、 たとえば旧VC++にしてもCLR上で動くVC++.NETにしても、最終的にはアセンブラのコードになっているのですよね? ところが単純にメッセージボックスを開くだけのプログラムであっても、それをアセンブラに変換する方法が見当もつきません。 アセンブラの本はたくさん見つかるのですが、 アセンブラのみでなく、Windowsアプリケーションとの関わりまで言及された参考書籍等ありますでしょうか?

その他の回答 (2)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.3

> ですが相当高度で広範なしかもハード側の知識が必要そうですね。 CPUの知識は必要でしょうが、それ以外のハードの知識は特に必要ないでしょう。ペリフェラルの部分はWindowsのAPIを呼び出せば済んでしまいますので。 > たとえば旧VC++にしてもCLR上で動くVC++.NETにしても、最終的にはアセンブラのコードになっているのですよね? ネイティブコンパイラの場合は、最終的には機械語に翻訳されます。CLRの場合は機械語に直接翻訳されるのではなく、CLRが理解できるコードになるだけです。 EXEファイルの作り方についてはあまりよい資料が見当たらなかったのですが、VBでEXEファイルを生成するサンプルが見つかりましたので、参考に挙げておきます。

参考URL:
http://nienie.com/~masapico/doc_MakeExe.html
bolaiskeok
質問者

お礼

じっくり解析してみます。 わざわざリンクを下さり、ありがとうございます!

回答No.1

C++.NETを使いましょう。

bolaiskeok
質問者

お礼

C++.NETのExpress Edtionをインストールしました。 これで練習することにします。 ありがとうございました。

関連するQ&A

  • VC++でlib作成

    VC++初心者です。変な質問かもしれません。 VC++でライブラリー(~.lib)の作成は出来るのでしょうか。以下は可能である場合の質問です。 1)プログラミング自体に特殊な事、あるいは決め事はあるのでしょうか?普通のexeを作成する時と同様で何も意識する事は無いのでしょうか? 2)作成自体はexeを作る時の様にビルドにより行うのでしょうか?操作が知りたいです。 3)何らかの共通処理をdllとして作成するのと、libとして作成するのでは何か違いがあるのでしょうか。単純に考えると、実行時に動的にリンクするdllの方がレスポンス面で劣り、スタティックにリンクするlibの方がアプリケーションモジュール(共通処理を呼ぶ側)が大きくなる様な気がします。設計する時にどうやって切り分けを行っていますか? (スタティックにリンクするのがlibと書いてしまいましたが、これ自体も良くわかっていません。) 以上、よろしくお願いします。

  • VC++6で、バッチでビルドを掛けたいのですが・・・

    VC++6で、同じようなプログラムを複数作成しなければ いけなくなったのですが、VS6を開いて、ビルドを掛けると 面倒なので、複数本をいっぺんにビルドしたいのですが、 よい方法は、あるでしょうか? よろしくお願いします。

  • VC2005 ビルドオプションについて

    VC2005で質問です。 [やりたいこと] VC2005でビルドを行い、意図したライブラリができるとします。 そのライブラリファイルを、予め準備していたExeファイルへ 入力/実行を自動的にする方法(設定)とかってあるのでしょうか? この時、作業はVC2005でビルドするだけです。 すみません、分かりにくいですね。 もう少し詳しく。。 [作業] 1. VC2005でビルドを実行 (1)Lib fileが作成される (2)予め準備していたexeファイル (3)予め準備していたexeファイルが出力したファイル 通常はビルドするだけだと、Libファイルが出来て((1)で)終了です。 今回やりたいのは、そのLibファイルを自動的に予め準備していた exeファイルへ入力/実行し、そのexeファイルから出力されたファイル を自動的に作成したいというものです。 言ってる事同じですね^^; ご存知の方がいらっしゃいましたら、ご教授ください。

  • VC++2010Exデバック実行エラー

    VC++2010Expressのデバック実行時にエラーが出て困っています。 VC++初心者レベルです。 宜しくお願い致します。 VC++2010Expressにて、OpenCV2.2を使用したプログラムを組むため学習中です。 OSはXPです。 OpenCVのサンプルプログラムを includeファイル、libファイルのパス(デバッグ用lib)の設定をして、 ビルドは正常に完了するのですが、デバック実行時(メニューバーの三角ボタン)に エラーが発生し、下記文面のVC++のエラーダイアログボックスがでます。 ==== imgCapture.exe の 0x7c94e4ff (ntdll.dll) でハンドルされていない例外が発生しました: 0xC0000235: NtClose は NtSetInformationObject 経由のクローズから保護されているハンドルにコールされました。 ==== 1.OpenCVが原因の可能性 OpenCVの関数  cvCaptureFromCAM(0) の前に矢印がついて止まっており、OpenCV2.2が最近出たばかりなので、 そのバグではないかと疑いましたが、 別PCの同様の環境で同じプロジェクトをビルドし、デバック実行すると、問題なく動作しました。 2.VC++2010Expressのプロジェクト設定が原因の可能性 上記同様、同じプロジェクトで別PCで動作しているため問題ないようです。 3.VC++関連が原因の可能性 現在使用しているPCは、もともとVC++2008Expressをインストールしておりましたので、 アンインストールせず、VC++2010Expressをインストールしてしまったことが原因かと考え、 VC++2008Express、VC++2010Express、関連アプリケーションをアンインストールして、 VC++2010Expressのみインストールしなおしてみましたが、解決しませんでした。 4.環境変数の可能性 ビルドで生成された.exeファイルを直接実行すると問題なく実行されましたので、 dllのパス設定は問題ないようです。 ビルドで生成されたexeが直接実行できるので、VC++関連が原因だと考えているのですが、 VC++2010Expressをインストールしなおしても解決しないため、お手上げ状態です。 問題なくデバック実行できる別PCと同じ設定にしているつもりですが、見落としがあるかも知れません。 解決方法、見落とし、これを試してみてはなど、気がつかれたことがありましたら アドバイスよろしくお願いいたします。

  • 【VC++】インストーラーの削除

    VC++2005の.NETでアプリケーションを作成しています。 VC++のプロジェクト追加にて、 新しいプロジェクト⇒セットアッププロジェクト を選択し、「.msi」ファイルをビルド生成して、 インストーラーを作成しました。 このインストーラーを実行し、指定のフォルダにアプリのexeファイルは生成することが出来ました。 しかし、このアプリを実行すると、同階層に設定ファイルが生成されるのですが、 アプリ終了後、「.msi」ファイルを再度実行して、インストールファイルの削除をする際に、 インストールフォルダと、その中に設定ファイルのみ残ってしまう状態となってしまいます。 削除時には、設定ファイルも一緒に削除したいのですが、 削除対象のファイルを指定することはできないのでしょうか? ちなみに設定ファイルの状態として、下記となります。 ・起動時に生成 ・ファイル名は同じ⇒よって生成の度に上書き ・生成場所はexeファイルと同階層

  • VCで作成したアプリを無音に

    VCで作成したアプリを無音に いつもお世話になっております。 現在アプリケーションを作成しているのですが、 そのアプリケーションに関してはまったくの無音にしたいのですが、 そのようなことは可能でしょうか? IEコンポーネントを用いて、web表示をし、 1秒ごとにIWebBrowser2->Navigateでページを更新しているのですが 毎秒、カチッという音がしてしまい、それを消したいと思っています。 http://www.usefullcode.net/2009/04/49_tabbrowser.html のページを元にやってみたら可能だったのですが、 管理者権限を必要とするようで、ユーザー権限だと普通に鳴ってしまいました。 今回はユーザ権限でも音を鳴らすことを防ぎたいので、ほかの方法を取ることになりました。 そこで、そのアプリケーションのみを完全に無音にするというのを思いついたのですが、 そのようなことは出来るのでしょうか? また、ほかにこんな方法でも出来そうではないかという案がありましたら ご教授していただけると助かります。 以上、よろしくお願いします。 開発環境:WindowsXP SP3      VisualStudio2005 VC++ ATL/WTL (MFC無し) 目標動作環境:WindowsXP,Vista,7         まずはXPで動かせることを目標ですが、最終的にはこの3種に対応したいです

  • VC++2008 Expressで作成したソフト

    VC++2008のC++/CLIで作成したフォームアプリケーションをほかのパソコンにインストール(exeやdllを指定したフォルダにコピーするだけですが....)する セットアッププロジェクトのようなものを作成しています。 以下の点が分かりませんのでご質問させていただきます。 ・デスクトップに実行ファイルへのショートカットアイコンを作成する方法。 ・すべてのプログラムにソフトを登録する方法。 初歩的な質問ではありますが,分かる方がいらっしゃいましたら,ご回答宜しくお願い致します。

  • VC++6で作成したDLLをVC++.NET2003から呼び出せますか

    現在、VC++.NET2003で作成しています。あるメーカから提供されているDLLがあるのですが、そのDLLとのリンクまではできたのですが、実行するとエラーになってしまいます。 (プログラムが異常終了するのではないのですが、そのDLLからの戻り値がエラーになり、期待した結果が得られません。) そのDLLはVC++6で作成したものらしく、マニュアルには、VC++6で作成したアプリケーションからの呼び出し方法が、記述されていました。 VC++6でアプリを作成すれば、正常に呼び出せることは明白なのですが、いかんせん、VC++.NET2003での開発が、ある程度進んでしまっていますので、いまからVC++6に切り替えるわけにもいきません。 それで、一般論として、確認したいのですが、VC++6で作成したDLLをVC++.NET2003で使用することは、出来ないのでしょうか。(これから、メーカにも確認する予定ですが、まずは、こちらで確認したく、投稿した次第です)

  • VC++ Windows2000 でリソースが開けない

    環境:Windows2000SP2 Visual C++ 6.0 SP5 VC++ 超初心者です。 MFCアプリウィザード(EXE)でSDIアプリケーションのスケルトンを作成し、手を加えずにビルドしましたが、エラー 「F:\…test5\test5.rc(11) : fatal error RC1015: cannot open include file 'afxres.h'.」 rc.exe の実行エラー が出て実行できません。 また、リソースウィンドウを開いてみると、リソースが一つも表示されずにその代わりに、 「ロードに失敗しました」と表示されています。 VC++をWindows2000で使用する場合には、何かしなければいけないのでしょうか?

  • VC++6 EXEをDLLに変換

    VC++6の「Win32 Aplication」で作成したプロジェクトがあります。 ビルドするとEXEができますが、これをDLLにするには どうすればよいですか。 よろしくお願いします。

専門家に質問してみよう