Sub Mainが実行されない

このQ&Aのポイント
  • VB6で作成したプログラムのSub MainがWindows XP上で実行されない問題について質問します。
  • Windows 2000上で作成したVB6のプログラムでは、Sub Mainが正常に実行されましたが、Windows XP上では実行されなくなりました。
  • プロジェクトの種類がActive X DLLで、スタートアップの設定もSub Mainに設定していますが、実行するとSub Mainのコードが実行されない問題が発生しています。
回答を見る
  • ベストアンサー

Sub Main が実行されない

Visual Basic 6.0 について質問があります。 以前、Windows 2000上でVBのプログラムを作っていました。 (1)プロジェクトの種類を「Active X DLL」にしています。   ・・外部プログラムで呼び出すDLLを作るためです。 (2)デバッグのために、[スタートアップの設定] を 「Sub Main」に設定していました。   ・・[プロジェクト プロパティ]ダイアログボックスで     [全般]タブの [スタートアップの設定] を 「Sub Main」にしています。 (3)[実行]-[開始]とすると、Sub Main に書いたコードが実行されました。 (4)★ところが、最近 Windows XP マシンにこのプログラムのソースを移しました。   その結果、Sub Main に書いたコードが実行されなくなりました。 何が原因なのでしょうか?

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

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

>Sub Main に書いたコードが実行されなくなりました。 ではどうなったのでしょうか? 他のモジュールが実行された? エラーが表示された?(←これなら、エラーの内容を書いた方がよいと思います)

Shogun
質問者

補足

実行中のまま何も起こらないのです。エラーも出ません。 たとえば、Sub Main の一行目に MsgBox "TEST" と書いても何も起こりません。 また、Sub Main の中にブレークポイントを設定してから実行しても、何も起こりません。Sub Main というか、何も実行されていないとしか思えないのです。 ステップ実行をやってみても何も起こりません。

その他の回答 (1)

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

なるほど。。。 以前は、拡張子がvbgのファイルから起動していませんでしたか? ActiveXDLLには、単体実行能力はありません。 Win2000であろうとXPであろうとそれは一緒です。 Sub Mainから起動というのは標準EXEの方ではなかったですか? 推測されるプロジェクト構成は、 1.標準EXEのプロジェクト(SubMain)より起動 2.ActiveXDLLのプロジェクト ではなかったですか?

Shogun
質問者

お礼

> 2.ActiveXDLLのプロジェクト こちらのほうです。最終段階では標準EXEから呼び出すのですが、 DLLでもデバッグ中はスタートアップの設定に書くことで 実行できるかなと思っていました。 わたしの記憶違いかもしれません。ありがとうございました。 けっきょく、イミディエットペインでMainと手で打って実行しています。

関連するQ&A

  • VBAで呼び出したVBのDLLのデバッグ方法

    VB2010で、COM相互運用機能を使って作成したDLLを VBAから呼び出すことはできるのですが この状態でこのDLLをデバッグすることはできないでしょうか。 本来ならば、DLLをデバッグするテストプログラムを VB2010のVB.NETのWindowsフォームアプリケーションか ConsoleApplication1で作成して、 同じソリューションの中に DLLとテストプログラムのプロジェクトを配置して 参照の追加でDLLを参照設定して 両者をデバッグをすると思われますが、 テストプログラムを作るのがかなり大変なのと、 今回作成したDLLは、元々はVBAの中のひとつのプロシージャ―で、 事情があって、このプロシージャ―だけをVBのDLLにしたものです。 このプロシージャ―は元々はVBAの中で正しく動作していたものです。 VBに書き直した時に何らかの不具合が起きていると思われます。 テストプログラムを作らずに、既存のVBAから呼び出して、 DLLの部分の動作だけを(できればVB2010で)デバッグできないでしょうか。 よろしくお願いします。 (WindowsXP SP3 , Excel2003のVBA , Visual Studio 2010)

  • VB.NETでただの実行ファイルを作る方法

    VB.NETでプロジェクトを作成すると、イベント型?ダイアログベースのプログラムになってしまうのですが、ダイアログ(フォーム)を用いないプログラムにするにはどうすればよいのでしょうか? C言語でいうMain()から始まるプログラムにしたいのです。

  • VB.netの初学者なんですが、

    VB.netの初学者なんですが、 VB.netが詳しい方、是非お願いいたします。 visual studio2008で、以前のVB.net(2003)のプログラムをコンパイルしてますが、 フォルダ名(abc.net)配下にいくつのプロジェクトがあります、main,ttt,ccc.exeのプロジェクトがありますが、abcってのプロジェクトがありません。 普通にコンパイル通れば、main.exe,ttt.exe,ccc.exeなどの実行モジュールが生成されて、デバッグ実行すれば、...\abc.net\obj\Debug\配下にmain.exe,main.pdb,ttt.exe,ttt.pdb,ccc.exe,ccc.pdbなどのファイルを生成できました。 以前の方は...\abc.net\obj\Debug\abc.exe,とabc.pdbの二つファイルを生成していました。私はすべてのプロジェクトをコンパイルして、デバッグ実行させて、その二つファイル(abc.exe,abc.pdb)の更新 日付は変わらず、以前の日付になっています。 どうすれば、abc.exeっていう実行モジュールが生成できますか。 それは現有のプロジェクト(main,ttt,ccc)中の1つプロジェクトにより、生成したと考えていますが、 どのファイル(拡張子)を見ると、どのプロジェクトより生成したことを分かりますか。 少し長いですが、よろしくお願いいたします。

  • デバッグセッションの実行可能ファイル

    Visual C++ 2008 Express EditionでC言語のプログラムをコンパイルし、エラーも警告も出ないので、デバッグ(実行)を行ったところ、 「デバッグセッションの実行可能ファイル」を選択する画面に移りましたが、何を設定したらよいのかさっぱりわかりません。 プログラムは単純なものなので、特にややこしいことはないと思うのですが・・・

  • gdiplus.dllを使わないプログラム開発

    はじめまして、 ”Microsoft Visual C++ 2008”にてダイアログベースのプログラムを書いています。 windows2000に対応するために、gdiplus.dllを使用しないプログラムを作成したいのですが、 新規作成したプロジェクトをそのままビルドしただけでもgdiplus.dllが読込まれてしまいます。 読込まなくするには、どのように設定を行なえばよいのでしょうか。 それとも”Visual C++ 2008”ではgdiplus.dllを使用しないダイアログベースのプログラム開発は不可能なのでしょうか。 動作対象OS:win2000(SPなし)以降 開発環境: 言語:Visual C++ 2008(visual studio 2008 professional edition) テンプレート:MFCアプリケーション アプリケーションの種類:ダイアログベース 以上、よろしくお願いいたします。

  • visual c++環境でのコンソールアプリ実行について。

    visual c++の開発環境を使ってC言語の勉強をしようと思っています。 下記のような手順でデバッグを実行しようと思っているのですが、上手くいかずこまっています。 1 Sample.cを、あらかじめ、/Visual C++ 2005/Projects/Sample/Sample.cのように格納しておく。 2 統合開発環境で、「ファイル」→「新規作成」→「既存のコードからプロジェクトを作成」を選択する。 3 既存のコードからプロジェクトを作成ウインドウが開き、「作成するプロジェクトの種類を入力してください」が「Visual C++」になっているので、そのまま「次へ」をクリックする。 4 プロジェクトの場所とソースファイルの指定ウインドウで、「参照」ボタンを利用して、「プロジェクトファイルの場所」欄に、「・・・/Projects/Sample」と入れ、「プロジェクト名」欄に「Sample」と入力する。「次のフォルダからプロジェクトにファイルを追加します」のチェックをそのままにして、「次へ」をクリックする。 5 プロジェクト設定の指定ウインドウで、「プロジェクトのビルド方法」の「Visual C++を使用する」のチェックをそのままにし、「プロジェクトの種類」を「コンソールアプリケーション」にする。それ以降にはチェックを付けないで、「完了」をクリックする。 6 統合開発環境の「ソリューションエクスプローラ」部から「Sample.c」を選んでダブル・クリックすると、コードが表示される。 7 これでデバッグするとコンソール(Visual c++のDOS窓)が一瞬表示され消えてしまいます。 間違っている所やこのようにしたらなど、意見よろしくお願い時ます。

  • 実行するファイルを替える

    Visual studio 2012 Express を使用して、プロジェクトHello内に、.cppファイルを三つ作成しました。main ,_tmain ,_tWinMainを書いたプログラムですが、 _tmain ,_tWinMainのファイルを選択し、ビルドとデバックを行っても、mainのファイルが実行されてしまいます。 _tmain ,_tWinMainのファイルを実行する方法を教えてください。 お返事お願いします。

  • VBの実行シーケンスについて

    お世話になります。 以下のような構造の場合 Sub1内の処理1が完了してから Sub2内の処理2が始まることは保証されるのでしょうか? また、Declareで定義したDLL呼出をCALLする場合、 CALLしたDLLの処理が終了するまでVBは待つのでしょうか? 基本的なところと思うのですが、開発したプログラムが不安なので、もしやと思い質問しました。 Sub Main() Sub1 Sub2 End End Sub Sub Sub1() 処理1 End Sub Sub Sub2() 処理2 End Sub

  • VB.NET 異なるプロジェクト間のデバッグ

    こんにちわ。 いまVB.NET2003で開発している者です。 あるVBProjファイルが参照設定であるdllファイルを参照しています。 VBProjファイル内のあるコードにブレークを張って, dllファイル側内にもブレークを張って, プロジェクトをまたがって,動的にデバッグしたいのですが, どうすれば良いでしょうか? 教えてください。よろしくお願いします。

  • 実行体を別のマシンで実行させたい

    Windows Vistaマシン(PC)にインストールしたVisual Studio 2005でVC++により作製した実行体を、素の(Visual Studio 2005がインストールされていない)Windows XPマシン(PC)で、実行させたく存じます。 まず、Windows VistaマシンおよびインストールされているOSの詳細は、下記の通りです。 PC:プロセッサ  →Intel Core2 Duo CPU T7250 @ 2GHz   メモリ    →2GB   システムの種類→32bit OS OS:Windows Vista Home Premium SP2 次に、インストールしたVisual Studio 2005の詳細は、下記の通りです。 Visual Studio 2005:Version8.0.50727.867(vsvista.050727-8600) .NET FRAMEWORK :Version2.0.50727 SP2 次に、Windows XPマシンおよびインストールされているOSの詳細は、下記の通りです。 PC:プロセッサ  →Intel Celeron M processor @ 1.3GHz   メモリ    →512MB   システムの種類→32bit OS OS:Windows XP Home Version2002 SP3 次に、作製した実行体は、Visual C++ プロジェクトから「MFCアプリケーション」を選択し、Vistaマシン上でダブルクリックで実行するとウィンドウが発生し、ウィンドウ内には、ボタンが1つおよび入力テキストが1つ存在して「テキスト入力してOKならば、OKボタンを押下する」程度の簡単なプログラムをリンクしたものです。以下の要領でXPマシン側に実行体を移動し、実行体をダブルクリックで実行させようとしたのですが、いずれも「このアプリケーションの構成が正しくないため、アプリケーションを開始できませんでした。アプリケーションを再度インストールすることにより問題が解決することがあります。」というダイアログが出現し、実行に失敗しました。以下、この実行体名を「text_input.exe」と称して失敗例を記述します。 1.「text_input.exe」をそのままXPマシンのROOTの直下に置いて実行した → NG 2.XPマシンに、   ・Microsoft .NET Framework Version 2.0 再頒布可能パッケージ (x86)   ・Microsoft .NET Framework 2.0 日本語 Language Pack (x86)   ・Microsoft Visual C++ 2005 再頒布可能パッケージ (x86)  をインストールした後、「text_input.exe」をXPマシンのROOTの直下に置いて実行した → NG 3.「text_input.exe」を作製する際、「stdafx.h」内で、#pragma宣言をして下記のファイルもリンクした   #pragma comment( dll, "C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT\msvcm80.dll" )   #pragma comment( dll, "C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT\msvcp80.dll" )   #pragma comment( dll, "C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT\msvcr80.dll" )   #pragma comment( manifest, "C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT\Microsoft.VC80.CRT.manifest" )   #pragma comment( dll, "C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.MFC\mfc80.dll" )   #pragma comment( dll, "C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.MFC\mfc80u.dll" )   #pragma comment( dll, "C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.MFC\mfcm80.dll" )   #pragma comment( dll, "C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.MFC\mfcm80u.dll" )   #pragma comment( manifest, "C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.MFC\Microsoft.VC80.MFC.manifest" )     その後、上記2項の状態のXPマシンのROOTの直下に「text_input.exe」を置いて実行した → NG いよいよ手立てがなくなりました。Windows並びにVisual Studioに精通されている方がおりましたら、素のWindows XPマシンで動作させる方法をご教示頂きたく、お願いいたします。

専門家に質問してみよう