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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
C#で作成したDLLをDelphiで呼ぶ方法
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Web初心者です。 簡易的なWebペ...
-
pythonでAmazonのほしいものリ...
-
Google ColaboでGUI作成
-
AIの登場でプログラマーたちが...
-
プログラマーと学歴の関係性に...
-
プログラマーは誘惑にさらされ...
-
python エラー
-
プログラミング言語について
-
Processingについて
-
プログラマーに向いている人の...
-
16x16のスプライトフォント
-
vba クリップボードクリアにつ...
-
python の 連鎖代入の文法
-
Pythonでの文字列からfloatへの...
-
・オブジェクト指向のメリット...
-
プログラミングの雑談がしたい...
-
最新のプログラム言語を学ぶに...
-
フォルダを自動作成・移動を複...
-
このURLで広告を出しているのは...
-
Google Colabでimport soxが出...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FriendとPublicの違い。。。
-
既定のコンストラクタがない?
-
(UWSC) 「#32770」の意味わかり...
-
クラスのアドレスを引数として...
-
ダイアログ表示時にチェックボ...
-
エディットコントロールでEnter...
-
イベントにAddHandlerされてい...
-
【ASP.NET】 独自で作成したク...
-
DebugクラスとTraceクラスの違い
-
MFCのCListCtrlでスクロールを検出
-
C++ protectedにアクセス不可
-
C++で継承元のクラスの代入演算...
-
継承したクラスを、継承元のク...
-
OnInitDialog()の関数の組み込み方
-
ダイアログクラスのコントロー...
-
MessageBoxを継承したい
-
DataGridViewのセルに斜線を引...
-
このコンパイルエラーの意味に...
-
MFCアプリのコマンドラインでパ...
-
C#のクラス設計について教えて...
おすすめ情報