

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を探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
(UWSC) 「#32770」の意味わかり...
-
VBA チェックボックスをオーバ...
-
【ASP.NET】 独自で作成したク...
-
クラスのアドレスを引数として...
-
関数の呼び出し元の検索
-
オーバーライド関数の呼び出し...
-
VC++ 7.1 で メインウィンドウ...
-
既定のコンストラクタがない?
-
OnPaintとOnDraw関数の違いにつ...
-
DateAdd関数について質問があり...
-
VBのシステムの設計書にUMLは適...
-
FriendとPublicの違い。。。
-
ウィンドウの背景に画像を配置する
-
Delphi6でVB.NETで作成のDLL呼出
-
DLLからEXEのクラスを呼び出す...
-
ダイアログ表示時にチェックボ...
-
エディットコントロールのイベ...
-
DataContextについて
-
個々の関数について継承してい...
-
C++ protectedにアクセス不可
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA チェックボックスをオーバ...
-
FriendとPublicの違い。。。
-
既定のコンストラクタがない?
-
イベントにAddHandlerされてい...
-
(UWSC) 「#32770」の意味わかり...
-
ボタンのオーナードローについて
-
MFCアプリのコマンドラインでパ...
-
ダイアログ表示時にチェックボ...
-
【ASP.NET】 独自で作成したク...
-
エディットコントロールでEnter...
-
MFCのドラッグ&ドロップについて
-
オーバーライド関数の呼び出し...
-
DataGridViewのセルに斜線を引...
-
MFCのCListCtrlでスクロールを検出
-
C++ protectedにアクセス不可
-
ダイアログクラスのコントロー...
-
クラスのアドレスを引数として...
-
エディットコントロールのイベ...
-
個々の関数について継承してい...
-
WindowsAPIのリストビューの...
おすすめ情報