• ベストアンサー

DLL作成について

Delphi6とVisualstdio.Net2003を持っています。Excelから使用するDLLを作成したいのですがどちらがいいか迷っています。(ソフト作成は久しぶりです).NetがかつてのVBのようにランタイムが必要ならばDelphiの方がいいかなと思っています。.NetでDLLを作成した場合ランタイム等は必要なのでしょうか?(Windows98の場合も含め)よろしくお願いいたします。

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

  • ベストアンサー
  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.2

Visual Studio.net 2003に含まれる Visual C++ .net2003で可能です。(新規プロジェクトからWin32プロジェクトを選び アプリケーションの設定でDLLを選択してください。) 2005を含めたどのバージョンのVisual Studioでもいえますが、 Visual Studioに含まれるアプリケーションの中で ネイティブなDLLが作成可能なのはVisualC++のみです。

undercap
質問者

お礼

ありがとうございます。C++で作成したいと思います。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

.NET で作られるDLLは、アセンブリといわれる中間言語の塊です。 .NET Framework がインストールされている環境で .NET アプリケーションからでないと使えません。 (ネイティブなDLLを作成すれば良いんでしょうけど)

参考URL:
http://okwave.jp/kotaeru.php3?q=2167406

関連するQ&A

  • "VB6.0 DLL" は "VB4.0" 含む?

    お世話になります。XP→7 に買換え、サクサク動くのでフリーのゲームをダウンロードして楽しんでる者です。ところで、あるお目当てのソフトに 「VB4.0のランタイムDLLが必要です。別途用意してください。」 なる注意点が記されていました。ネット検索すると "VB6.0 ランタイムDLL" が多数ヒットします。 Q1: 6.0 には 4.0 が含まれているのでしょうか? あくまでも 4.0 を入れないといけないんですか? Q2: お勧めのダウンロードサイトがあれば、教えてください。

  • VB2010で作成したdllからtlbが作れない

    VB.NETで作成したDLLをExcelのVBAから呼び出すということをやっています。 VB2007のときはよかったのですが、VB2010にしてからうまくいかなくなりました。 具体的には、コンパイルしてClassLibrary1.dllファイルを作成してから C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe ClassLibrary1.dll /tlb:ClassLibrary1.tlb /codebase を実行すると、 ClassLibrary1.dllは有効な.NETアセンブリではないため、読み込めませんでした。 となります。 ClassLibrary1の「アセンブリをCOM参照可能にする」にはチェックを入れています。 おわかりの方がいらっしゃいましたら、どうぞよろしくお願いいたします。

  • VB4.0にて作成したソフトの配布

    VB4.0(32ビット版)にてソフトを開発しました。 フリーソフトとして配布しようと思います。 インストーラ(EXEとReadMeとKernel32.DLL,Version.DLL)を作成し、知人のPC(Win2000)にインストールしようと したら「VB40032.DLLが見つかりませんでした。」と表示され、インストーラも起動できなかったそうです。 VB6.0のランタイムを入れてもだめだったそうです。 やはり、VB4.0(32ビット版)のランタイムが必要なのでしょうか?ご教授願います。

  • DelphiでVB用のDLLを使えないでしょうか?

    初心者で全然分からないので教えて欲しいのですが、色々出回っているようなVB用のDLLをDelphiで使用する方法はないのでしょうか?宜しくお願いします。

  • VB2008でのDLL作成方法について

    はじめまして、はじめて投稿します。 初心者なので変な質問をしていたらすいません。VB2008を使用しています。 VBで作成したDLLファイルをLabviewで使用したいと思っています。 ただVB6.0でActiveX DLLを作成する方法はわかるのですが、VB2008で作成する方法がわかりません。 クラスライブラリでプログラムを作成し、DLLにすることはできるのです・ しかしレジストリに登録しようと思い「regsvr32 ファイルのパス**.dll」と入力したところ「**.dllは読み込まれましたが、DllRegisterServerエントリポイントが見つかりませんでした」と出ます。 調べてもVB2008でのActiveX DLL作成方法が見つからなくて困っています!!! わかるかた、よろしくお願いいたします。

  • Delphi6でVB.NETで作成のDLL呼出

    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

  • VisualStudio2010 DLL作成方法

    VisualStudio2010を使っています(初心者)。 VBで作成していたのですが、一部VC++を使わなければいけなくなりました。VC++はDLLで作成して、VBの方でDLLを参照して処理を行いたいと考えています。 そこで試しに作成したVC++で作成したDLLをVBで参照しようとしたらERRORになってしまい上手にできませんでした。※ERRORの内容までは詳しく覚えてません。VC++のDLLを作成~VBのDLLの参照までを説明しているサイトなどありましたら教えて下さい。 よろしくお願いします。

  • DLLについて

    VC++でDLLを作成しようとしているのですがいくつか判らない点があります。 1. スタティックライブラリとスタティックリンクライブラリの違い。この二つの用語の違いが分かりません。 2.VBからVC++で作成したDLLを使用するときには.libファイルは必要ないのでしょうか。使用しなくても、使うことができたので。

  • VC++わかるかた初心者からの質問お願いします

    VC++に詳しいかた教えてほしいのですが、 VBはソフトを動かすときにランタイムが必要ですが VCで作成されたEXEでは そういったものがひつようなんでしょうか? またVBだといろいろとDLLとかOCXとかがEXEとは別途必要ですが VC++の場合はどうなるのでしょうか? EXEと一緒にパッケージできてしまったりはないのでしょうか? よろしくおねがいします。

  • ゲームにDLLをインジェクションして改造する目的でDLLを作成したいの

    ゲームにDLLをインジェクションして改造する目的でDLLを作成したいのですが、インジェクターは持ってますが、DLLの作り方がわかりません。なのでこんな初心者でも同じような目的でDLLを作成してる人・する人またはそのような作り方の乗ってるサイトなどあったら教えてください。使用しているソフトはVB2008とVCです。 また目的は違っても、DLLの作り方はわかればそこから学んでいきますのでDLLの作り方を書いたサイトがあればよろしくお願いします。一週間ごとにちがうDLLを用意しなければいけないので急いでます。(水曜日か木曜日までには別のDLLを用意しないと駄目)よろしくお願いします。

専門家に質問してみよう