VB6でバイナリ互換なDLLを作成する方法とテストのスマートな方法

このQ&Aのポイント
  • VB6.0でActiveX DLLをバイナリ互換に作成する方法と、テストのスマートな方法について教えてください。
  • VB6.0にてActiveX DLLで開発をしたい場合、プロジェクトのプロパティ.コンポーネントからバイナリ互換を選択することができません。
  • VB6.0でDLLを作成する手順として、修正したプロジェクトを保存してDLLを作成し、作成したDLLを指定の場所に格納する必要があります。また、テスト起動画面から指定したDLLを使用して単体テストを行います。
回答を見る
  • ベストアンサー

VB6でバイナリ互換でDLL作成するには?

VB6.0にてActiveX DLLで開発をしたいのですが、 プロジェクトのプロパティ.コンポーネントにてバイナリ互換を選択すると バージョン互換コンポーネントを設定できません。というエラーメッセージが出て、 DLLを作成できません。 プロジェクトはフォーム1画面、標準モジュール複数、クラスモジュールで構成されています。 DLL作成手順のアドバイスをお願いします。 もう1点、 ある程度、開発できたら単体テストを行います。 その際は現場で用意されているテスト起動画面を使用するように言われたのですが、 この方法だと自分の担当画面に修正を加えるたびに下記1~3の作業を行う 必要があると思うのですが、もっとスマートな方法はないのでしょうか? 1.修正したプロジェクトを保存してdllを作成する。 2.作成したdllを所定の場所(現場で指示された場所)に格納 3.テスト起動画面からそのdllを指定して単体テスト

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

  • ベストアンサー
  • Kuppycat
  • ベストアンサー率50% (109/216)
回答No.1

バイナリ互換にするためには、基のDLLを指定する必要があります。 選択すると、パスを指定する欄がアクティブになると思うのですが... 単体テストは、DLL側プロジェクトのデバックタブで、外部プログラムの開始を選択し、パスにテスト起動用画面のexeを指定してください。 その上でDLL側のプロジェクトをデバッグ実行させればできるはずですよ。

karen237
質問者

お礼

・「互換なし」でdllを作成していませんでしたので作成後、うまくいきました。 ・教えの通り、外部プログラムを指定したら上手くいきました。 単体テストかなり楽に行えます♪ ありがとうございます。

関連するQ&A

  • VB DLLプロジェクトについて

    いつもお世話になってます。 VB6.0で開発を行っております。VBのDLLを作成しております。 そこで、お聞きしたいのが、DLLプロジェクトのプロパティの中に、コンポーネントという項があるのですが、 その中のバージョンの互換性について教えていただきたいと思っております。 まず、根本的にこれは設定をするとどういうことになるのでしょうか?バージョンの互換性という意味がよくわからないので、教えていただきたいと思います。 それと、「互換なし」、「プロジェクト互換」、「バイナリ互換」はどう使い分けるものなのでしょうか? ヘルプを見てもよくわかなかったので、教えていただきたいと思っております。 何卒よろしくお願い申し上げます。

  • VB.NETで参照設定したDLLの修正反映

    VisualStudio2008で開発をしています。 共通定数を『Const.dll』として作成しています。 「Const.dll」には「Public Const TEST_PATH AS String = "C:\Temp";」のように、パスが記載されています。 利用側モジュール(ex. Test.exe)で、それを参照設定して利用しています。 仕様変更によりパスが変更になり、「Public Const TEST_PATH AS String = "C:\Temp\test";」のように「Const.dll」を修正しました。 基本的な勘違いかもしれませんが、「Const.dll」を修正したことにより、利用側モジュールも再度リビルドしなければいけないのでしょうか。 参照設定なので、リビルドしなくても、利用側モジュールが起動したときに、「Const.dll」を読み直しして、仕様変更後のパスで処理をおこなうだろうと思っていたいのですが、 リビルドしていない状態であれば、「Const.dll」をいくら変更しても、仕様変更前のパスで処理しようとしています。 参照設定先のモジュールを修正した場合、参照設定元のモジュールもリビルドしなおさなければならないのであれば、あまり参照設定の旨味がないような気がしています。 参照設定そのものに問題があるかもしれません。 情報が不十分であれば、その旨お願いいたします。 申し訳ありませんが、教えてください。

  • C#でのDLL

    OS  :WindowsXP Pro SP1 開発環境:VisualStudio .NET 2003 開発言語:C# 開発形態:Windowsアプリケーション 開発初心者です。よろしくお願い致します。 テキストファイルを読み込んで、その中にある文字列を3つほど返却値として返すDLLを作成したいと思っています。 新規にクラスライブラリのテンプレートでプロジェクトを作成し、プロジェクトメニューからコンポーネントの追加をしました。 質問事項 1.まず、DLLを作成する手順として、上記の方法でよろしいのでしょうか? 2.ファイルからテキストを取得するところまではできるのですが、それを返却値として、呼び出し元の別プロジェクトへは、どうすればよいのでしょうか? どなたか、ご教授お願い致します。

  • VC++で作成したDLLについて

    すみません、 VC++6.0で作成したDLLについて教えていただきたいのですが。 TEST_A.DLLというDLLと、TEST_B.DLLというDLLファイルを作成したとして これをC:\TEST\DLL\に格納してるとします。 このとき、TEST_B.DLLからはTEST_A.DLLの関数を呼び出しています。 次に、TEST_B.DLLの関数を使用しているTEST.EXEという実行ファイルを VB6.0で作成します。 このファイルをC:\TEST\EXE\に格納します。 そして、TEST.EXEを実行すると、 「TEST_B.EDLLが見付かりません」と言って怒られてしまいます。 VBでは、TEST_B.DLLをフルパスで指定しております。 しかし、TEST_A.DLLをEXEと同じ場所に置いてあげると 正常に動きます。 これは、TEST_B.DLLからTEST_A.DLLが見えていないということなのでしょうか? TEST_B.DLLの設定がおかしいのでしょうか? それとも、TEST.EXEでもTEST_A.DLLをフルパス指定してあげないといけないのでしょうか? ちなみに今回、プロジェクトマネージャーから「環境変数(PATH)の設定はしたくない」と言われていますので、PATHの指定はしてません。 すみませんが、どなたか教えていただけますでしょうか?

  • VB6から参照可能なDLLの作成

    VB6から参照可能なDLLの作成を参考書をみながらしましたが、上手くいかない為質問させていただきます。 開発環境VC++ 2005 C++ CTEST.dll #include <windows.h> __declspec (dllexport) int __stdcall test(int i) { i = i + 5; return i; } .defファイル LIBRARY "test" DESCRIPTION EXPORTS A 以上でDLLを作成し、VB6側で Private Declare test Lib "CTEST.dll" (ByVal i as integer) で宣言しても「エラー53 ファイルがみつかりません」と表示されます。「参照の追加」から参照しようとしても「このファイルは参照できません。」をエラーがでてしまいます。 直すべき点はどの部分なのでしょうか? ご教示ねがいます。

  • VB6で作成したDLLのコンポーネント登録について

    VB6(SP6)+ActiveReports2.0jでSQLserver2005からデータを読み込んで印刷するDLLを作成しました。 このDLLをASP(VBS)を使ってWeb画面から呼び出しています。 その際、DLLはコンポーネントサービスに登録して使用しているのですが、一度コンポーネントサービスから削除して、VBのセットアップ(ディストリビューションウィザード)でセットアップしてもDLLは正常に呼び出されます。 最初のコンポーネントサービスへの登録は必要なのでしょうか? ※あまり深く理解せずシステムを引き継いだものですから、別の環境にインストールする際、上司からの問合せで返答に困っています。 Web上でいろいろ検索はしてみたのですが、仕組みが古い?せいか見つけることができませんでした。 よろしくお願いいたします。 こういう場での質問はあまり経験がありませんので、質問内容で不備等ありましたらご指摘ください。

  • VBで作成したdllをAccessで使用

    こんにちは。教えてください。 開発環境はXP/Access VBA(97 SP-1)です。 パスワード暗号化用のFunctionを作ったのですが、 このままではモジュールを開き、ソースを読まれたら 暗号化ロジックが判明してしまいます。 そこで、このFunctionをdll化してしまいたいと思うのですが、 dllをVBで作成する場合、VBのバージョンに制限は あるのでしょうか? Accessのバージョンが古いため、少し心配です。 VBは最新バージョンでも問題ないですかね? 宜しくお願いします。

  • Visual C++ Express Edition 2008 での新規プロジェクト作成ができない

    自己解決できなかったので質問させて頂きます。 OS:Vista Home Premium Visual C++ Express Edition 2008 を使ってみたのですが、 「ファイル→新規作成→プロジェクト」で適当なプロジェクトを建てようよすると、 画面左下に『プロジェクト'●●●'の作成に失敗しました』と表示され、何も起こらない状態です。 そこで以下2つの方法を試しました。 1)参考:http://blog.bitmeister.jp/?p=497  手順1の「VsWizard.dllの登録」を行うと、  『モジュール"C:\Program"の読み込みに失敗しました。   バイナリが指定されたパスに格納されていることを確認するか、   バイナリまたは依存.DLLファイルに問題がないか調べてください。   指定されたモジュールが見つかりません。』  と表示され、次に進むことができませんでした。  このエラーメッセージの意味がさっぱり分かりません。  2)参考:http://oshiete1.goo.ne.jp/qa4225412.html  IEが原因のケースもあるようですが、OSがVistaなのでアンインストールできません。  セキュリティソフトはNortonを使用しています。  Nortonを眠らせ、再起動してからプロジェクト作成を試みましたが、状況は変わりませんでした。 どなたかアドバイスをよろしくお願いします。

  • C#で実行可能なdllの作成方法

    現在、C#でアプリケーションを作成していますが、exe形式ではなくdll形式で実行可能な モジュールを作成したいです。 しかし、単に[STAThread]のMain関数を作ったり、staticコンストラクタを作成しただけでは 起動できません。 どうしたら実行可能なdllを作成できるのでしょうか。 最終的にやりたいことは、C++のCreateRemoteThread()からこのdllを起動することです。 どうぞよろしくお願いします。

  • VB2008にてWEBのDLL作成

    下記のような流れの処理を作成したいと思っています。 Webページ、()の部分は別言語で作成されています。 ・HPから入力された内容を取得(登録ボタン押下) ・DBへ登録 ・成功/失敗などの結果を返す(結果内容により画面遷移) VB2008にてプロジェクトを新規作成する際はどれを選べばよいかもわからず・・・ 見本などありましたら、ご教授お願いします。 環境 Windows2003 server IIS6.0 開発 VB2008 SQLServer2005

専門家に質問してみよう