人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

C#でDLLの関数を作りたいです。

具体的にはMetaTraderという投資ソフトから、C#の関数を呼びたいのです。

http://wikiwiki.jp/fxmemo/?DLL%A1%A7MT4%20%A4%AB%A4%E9%20DLL%20%A4%F2%B8%C6%A4%D3%BD%D0%A4%B9

こちらに親切な方が、そのやり方を書いてくれていますが、知識不足なためよく分かりません。プロの方が見ればすぐ分かるかもしれません。DLLの種類は何になりますか?COMというものでしょうか?

MetaTraderからDLLを呼び出す方法は検索で出てきますので分かります。それに対応するDLLの作り方が分からないのです。VC# 2008を使っていまして「C# DllExport」などと検索しても、C++でのサンプルばかりで、C#のものは出てきません。

ある関数をMetaTraderから呼び出せるDLLのサンプルを提示してください。C#だけでは無理なのでしたら、C++のコードも混ぜて良いのですが、そしたらC#へさらに制御を渡す部分もつけて頂きたいです。宜しくお願いします。

●質問者: ma_kobayashi
●カテゴリ:コンピュータ
✍キーワード:C# C++ DLL MetaTrader VC
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● tdoi
●35ポイント

コメントが空いていないので、こちらに失礼します。

はずしているかもしれませんが、たぶん、ご期待のことはできないと思います。

C#でのDLLの作成自体は比較的簡単で、次のページを見てもらえれば、分かると思います。

http://msdn.microsoft.com/ja-jp/library/3707x96z(VS.80).aspx

問題なのは、MetaTraderというのが、おそらく、ネイティブアプリだということです。

呼び出し元(MetaTrader)を変更できないのであれば、その呼び出し規約は変えられないので、ネイティブDLLを作成する必要があるでしょう。

なので、可能性としては、

MetaTrader -> Native DLL(C++/CLIで作成) -> CLR DLL (C#で作成)

という流れではいけるのかもしれませんが、Native DLLからCLR DLLを呼び出せるかどうか、はちょっと未確認です。

現実的な方法としては、C#の関数を利用する部分を単独のアプリケーションとしてしまい、

MetaTrader -> Native DLL(C++で作成) == 起動 ==> C#アプリケーション

という形で、DLLが別プロセスとして、起動したアプリケーションとやりとりする方がいいのかもしれません。


このあたりは、「C#の関数を呼びたい」ということの意味によっても変わってきます。


よく分からない部分などあれば、コメントあけてもらえれば、補足します。


2 ● pahoo
●35ポイント

C#によるDLL作成方法については、tdoiさんが回答しています。


次にC#で作成したDLLを呼び出す方法ですが、MetaTraderがCOM呼び出しをしているとしたら、タイプライブラリ(TLB)ファイルを作成し、Regasm.exeを使ってアセンブリ登録することで対応できるかもしれません。(自信はありませんが)

具体的な手順は「C から C# のクラスを呼び出す方法 」を参考にしてください。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ