喫茶XRAYトップページ


[12369] C#のDLLをDelphiで使用する返信 削除
2018/10/6 (土) 07:25:30 Mr.XRAY
以下の記事を追加しました.

[ C# で作成した DLL を Delphi で使用 - COM 参照 ]
http://mrxray.on.coocan.jp/Delphi/Others/Usage_dotNETDll.htm

 Visual Studio Express 2013 という古いバージョンで DLL 作成しています.
新しい Visual Studio だと設定画面等が違うかも知れません.ご容赦を.


[12370] Re:C#のDLLをDelphiで使用する返信 削除
2018/10/7 (日) 14:48:02 taka
▼ Mr.XRAYさん
> 以下の記事を追加しました.
>
> [ C# で作成した DLL を Delphi で使用 - COM 参照 ]
> http://mrxray.on.coocan.jp/Delphi/Others/Usage_dotNETDll.htm
>
>  Visual Studio Express 2013 という古いバージョンで DLL 作成しています.
> 新しい Visual Studio だと設定画面等が違うかも知れません.ご容赦を.


Delphiから普通にC#のDLLを呼び出す - Delphi for .Net対応バージョン限定

・csharp_dll.dll
ファイル : 新規作成 : その他 : C#プロジェクト : クラスライブラリ
クラス名をClassからClass1に変更しクラス関数を追加する
  public static string Hello()
  {
    return "Hello from C#";
  }
Class1.csを保存後
csharp_dllでプロジェクトを保存する
コンパイルしてdllを作成する。

・DelphiプロジェクトからC#を呼び出す
ファイル : 新規作成 : VCLアプリケーション - Delphi for .Net
プロジェクト:参照の追加をクリックして先ほど作った csharp_dll.dllの場所を指定して追加する
フォームにボタンを追加して以下を書き込む
uses csharp_dll;

procedure TForm1.Button1Click(Sender: TObject);
  var TClass1 : csharp_dll.Class1;
begin
  ShowMessage(TClass1.Hello);
end;

[12371] Re2:C#のDLLをDelphiで使用する返信 削除
2018/10/7 (日) 16:05:31 Mr.XRAY
▼ takaさん

> Delphiから普通にC#のDLLを呼び出す - Delphi for .Net対応バージョン限定

2005, 2006, Delphi 2007 for .NET とかですね.
えらい簡単に使えますね.恐れ入りました (^^)

Visual Studio の C# で書くとこんな感じでしようか.
[参照設定] で該当 DLL を追加しておいて.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using csSimpleDLL;

namespace DLLTestApp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            CalcFuncs LCalcFuncs = new CalcFuncs();
            MessageBox.Show(LCalcFuncs.GetText());
        }
    }
}




[12372] Re3:C#のDLLをDelphiで使用する返信 削除
2018/10/7 (日) 18:09:14 taka
▼ Mr.XRAYさん
> ▼ takaさん
>
> > Delphiから普通にC#のDLLを呼び出す - Delphi for .Net対応バージョン限定
>
> 2005, 2006, Delphi 2007 for .NET とかですね.
> えらい簡単に使えますね.恐れ入りました (^^)

.Netなら参照設定だけで直接呼べるのを思い出したのでやってみました。


[12373] .NET Framework が悪いのだ返信 削除
2018/10/7 (日) 21:52:14 Mr.XRAY
> [ C# で作成した DLL を Delphi で使用 - COM 参照 ]

ネットで調べると,この反対の操作についての質問もあります.
だいたいですね,このような問題はですね,マイクロソフトが .NET Framework
なんていうのを作ったのがよくない !!
マルチプラットフォームがうたい文句だったのですが,
実際には Windows 専用となっていると言ってもいいでしょう.

.NET Framework のバージョンも気にしないといけないし.


[12375] Re:.NET Framework が悪いのだ返信 削除
2018/10/8 (月) 11:44:15 taka
▼ Mr.XRAYさん
> > [ C# で作成した DLL を Delphi で使用 - COM 参照 ]
>
> ネットで調べると,この反対の操作についての質問もあります.
> だいたいですね,このような問題はですね,マイクロソフトが .NET Framework
> なんていうのを作ったのがよくない !!
> マルチプラットフォームがうたい文句だったのですが,
> 実際には Windows 専用となっていると言ってもいいでしょう.


.NET Frameworkをまねしたmonoという.Netコンパイラなら
Windowsも含めて、すべてのプラットフォームで動作しますよ

Mono
 https://ja.wikipedia.org/wiki/Mono_(%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2)

> .NET Framework のバージョンも気にしないといけないし.
バージョンもそうですけど

.Netは開発ツール付属のプログラムで1コマンドで簡単に高級言語に逆コンパイルでるので
配布の際にアプリを解読できないように暗号化処理する必要があるのが面倒ですね。



[12376] Re2:.NET Framework が悪いのだ返信 削除
2018/10/8 (月) 15:32:18 Mr.XRAY
▼ takaさん

> Mono
>  https://ja.wikipedia.org/wiki/Mono_(%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2)


結構歴史があるんですね.

> .Netは開発ツール付属のプログラムで1コマンドで簡単に高級言語に逆コンパイルでるので

中間言語で翻訳されているというやつですね.
Delphi で作成した EXE は無理ですが,
Delphi で作成した EXE を逆コンパイルしたいという質問を見かけたことがあります.


[12374] Re:C#のDLLをDelphiで使用する返信 削除
2018/10/8 (月) 06:36:05 Mr.XRAY
> [ C# で作成した DLL を Delphi で使用 - COM 参照 ]
> http://mrxray.on.coocan.jp/Delphi/Others/Usage_dotNETDll.htm


以下を追加しました.
最近,uses 部の Excel2000 がどうのこうのという話題があったのを思い出したので.
私の場合,どうしてもコード補完の入力支援の機能に頭がいってしまうものですから,

[  タイプライブラリの取り込みなしで C# の DLL を使用する方法 ]
http://mrxray.on.coocan.jp/Delphi/Others/Usage_dotNETDll.htm#08


[12377] Re2:C#のDLLをDelphiで使用する返信 削除
2018/10/8 (月) 15:43:23 Mr.XRAY
[C#で作成したDLLの呼び出し方]
http://madia.world.coocan.jp/cgi-bin/DelphiBBS/wwwlng.cgi?print+201809/18090006.txt

>仕方がないので、DLLの作者に、「C# to C++ Converter」で作り直して貰うよう調整してみます。
>この方法が、一番労力をかけないでできると思いますので、DLL作成者に依頼してみます。
>早速、この内容をDLLの作者に伝えて、改修をお願いしております。


なんて書いてありますが,
私がその作者だったら,こんな依頼がきたらイヤですね.
依頼には対価が伴います.でもイヤです.ハイ
どうやって断るか苦労しますな.こういうのは.


[12378] Re3:C#のDLLをDelphiで使用する返信 削除
2018/10/8 (月) 16:01:02 taka
▼ Mr.XRAYさん
> [C#で作成したDLLの呼び出し方]
> http://madia.world.coocan.jp/cgi-bin/DelphiBBS/wwwlng.cgi?print+201809/18090006.txt
>
> >仕方がないので、DLLの作者に、「C# to C++ Converter」で作り直して貰うよう調整してみます。
> >この方法が、一番労力をかけないでできると思いますので、DLL作成者に依頼してみます。
> >早速、この内容をDLLの作者に伝えて、改修をお願いしております。
>
> なんて書いてありますが,
> 私がその作者だったら,こんな依頼がきたらイヤですね.
> 依頼には対価が伴います.でもイヤです.ハイ
> どうやって断るか苦労しますな.こういうのは.


某掲示板がらみのこういうことでしたか。

DLL作成者に依頼とか知り合いなんですかね?
違うとすると アツカマ ブーって言われますね。

元のC#のDLL を呼び出す C#(COM) DLLを質問者が作ってしまえば、
作者さんも困らないし、質問者さんも好きな仕様にすることができます。
こういう提案が妥当でしょう

元のC#のDLL ⇔ C#(COM) DLL ⇔ Delphiアプリ


INCM/CMT
Cyclamen v3.82