

VisualSutudio2005で作成され提供されているDLLをDelphi6から呼びだしたいと思っています。
提供ファイルとしてあるのは以下のものです。
・DLLファイル本体
・XMLファイル
直接は呼びだせない(?)と思ったので、
VB.NETでDLLを作って間に入れて、
下のように呼び出せばいいのかなと考えています。
Delphi6で作成のEXE → VB.NETで作成のDLL(COM登録?) → 対象のDLL
まずはDelphi6のEXE→VB.NETのDLLの部分を作って試してみたですが
Delphi6のEXEの起動時にエラーとなってしまいます。
「アプリケーションの初期化に失敗しました」
ネットなどで調べてみて作り方は下記のようにしました。
<呼ばれる側:VB.NETのDLL>
1.COMクラスを作る。
・COM参照可能の設定にした。
(タイプライブラリが作成され、レジストリへのCOM登録は自動でされる?)
2.作成したDLLはCドライブ直下に置いた。
※下の*****は自動作成された固定値が入っています。
また見やすくするためここでは半角空白を全角空白に変えています。
--------------------------------------------------------------------
Imports System.Windows.Forms
<ComClass(Middle_Dll.ClassId, Middle_Dll.InterfaceId, Middle_Dll.EventsId)> _
Public Class Middle_Dll
#Region "COM GUID"
' これらの GUID は、このクラスおよびその COM インターフェイスの COM ID を
' 指定します。この値を変更すると、
' 既存のクライアントはクラスにアクセスできなくなります。
Public Const ClassId As String = "**************************"
Public Const InterfaceId As String = "**************************"
Public Const EventsId As String = "**************************"
#End Region
' 作成可能な COM クラスにはパラメータなしの Public Sub New() を指定しなければ
' なりません。これを行わないと、クラスは COM レジストリに登録されず、
' CreateObject 経由で
' 作成できません。
Public Sub New()
MyBase.New()
End Sub
Public Sub DispMsg()
Dim MsgRet As MsgBoxResult
MsgRet = MessageBox.Show("VB.NET DLLより表示!", "確認メッセージ", MessageBoxButtons.YesNo, MessageBoxIcon.Information)
End Sub
End Class
---------------------------------------------------------------------
<呼び出し側:Delphi6のEXE>
1.タイプライブラリの取り込み設定で登録したDLLを選択し、
「コンポーネントラッパーの作成」にチェックを入れてインストールを実行。
---------------------------------------------------------------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,OleCtnrs,ComObj, OleServer;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
//----------
//静的呼出
//----------
procedure DispMsg();Stdcall; external 'c:\Middle_Dll.dll' name 'DispMsg';
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
//----------
//静的呼出
//----------
DispMsg();
end;
end.
-----------------------------------------------------------------
Delphi6のEXEはすでにあるものなので、
呼び出し元はDelphi6から変えられませんが、
呼び出し先はC#やC++でも構いません。
(1)Delphi6のEXE→VB.NETのDLLの呼び出しは可能でしょうか?
(2)可能でしたら不具合と思われる箇所はどこでしょうか?
(3)この方法より良いと思われる方法はありますでしょうか?
DLLを作った事がないので見よう見まねで作っています。
気になる点やアドバイス程度でも構いませんので、
どうかよろしくお願いいたします。
== 開発環境 ==
WindowsXP SP3
Delphi6 Enterprise SP2
VisualSutudio2005 ProffesionalEdition 評価版
.NET Framework 1.1~3.5
No.1ベストアンサー
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) IT初心者です 仕事で、vb.netで作成されたdllをvbaで呼び出すプログラムを作成しろと言われ 1 2023/03/27 08:22
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- フリーソフト cygewf-2.dllがない、と表示され、ダウンロードしたファイルが動作しない 2 2023/03/27 11:05
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Windows 10 IT初心者です! powershellで以下のようなエラーが出ました オブジェクト参照がオブジェクト 1 2023/05/17 11:30
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・昔のあなたへのアドバイス
- ・字面がカッコいい英単語
- ・許せない心理テスト
- ・歩いた自慢大会
- ・「I love you」 をかっこよく翻訳してみてください
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・はじめての旅行はどこに行きましたか?
- ・準・究極の選択
- ・この人頭いいなと思ったエピソード
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
FriendとPublicの違い。。。
-
C++ protectedにアクセス不可
-
エディットコントロールでEnter...
-
既定のコンストラクタがない?
-
MessageBoxを継承したい
-
コンソールアプリでのクリップ...
-
privateなメンバ関数をテストす...
-
WindowsAPIのリストビューの...
-
C++で継承元のクラスの代入演算...
-
リストビューのスクロールについて
-
(UWSC) 「#32770」の意味わかり...
-
C++では構造体がメンバ関数をも...
-
オブジェクト指向 集約の実装...
-
Homepage Managerの事
-
派生クラスから基本クラスprote...
-
関数の呼び出し元の検索
-
MFC モードレスDlgについて
-
クラス内の構造体の実体化とア...
-
Delphi6でVB.NETで作成のDLL呼出
-
イベントにAddHandlerされてい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
既定のコンストラクタがない?
-
FriendとPublicの違い。。。
-
(UWSC) 「#32770」の意味わかり...
-
ダイアログ表示時にチェックボ...
-
クラスのアドレスを引数として...
-
イベントにAddHandlerされてい...
-
エディットコントロールでEnter...
-
エディットコントロールのイベ...
-
【ASP.NET】 独自で作成したク...
-
個々の関数について継承してい...
-
C++ protectedにアクセス不可
-
MFCアプリのコマンドラインでパ...
-
DataGridViewのセルに斜線を引...
-
C#で通常のbuttonコントロール...
-
ソケットを使った「非同期」通...
-
MFCのドラッグ&ドロップについて
-
オーバーライド関数の呼び出し...
-
[MFC] CWnd::MessageBoxの警告...
-
ボタンのオーナードローについて
-
C++/CLIからC++の呼び出しで例外
おすすめ情報