ページ 11

exe内でdellとしてエクスポート

Posted: 2013年5月19日(日) 13:31
by def
exe内で内部の関数をdellのようにエクスポートは可能性でしょうか?
ネット検索ではハッキリしなかったので、経験のあるかたにおうかがいします。

Re: exe内でdellとしてエクスポート

Posted: 2013年5月19日(日) 13:37
by h2so5
dellではなくてDLLの間違いでは?
exeで関数をエクスポートするという意味がよくわかりません。どうやって関数を使うのでしょうか?

Re: exe内でdellとしてエクスポート

Posted: 2013年5月19日(日) 13:54
by def
普通exeからdll 内の関数を呼び出しますが
exe から他プロセスのexe 内にある関数を呼び出すことは可能でしょうか?という意味でした。言葉足らずですみません。

Re: exe内でdellとしてエクスポート

Posted: 2013年5月19日(日) 14:07
by softya(ソフト屋)
def さんが書きました:普通exeからdll 内の関数を呼び出しますが
exe から他プロセスのexe 内にある関数を呼び出すことは可能でしょうか?という意味でした。言葉足らずですみません。
それは無理というか、一般的なOSだと仮想記憶空間を跨ぐので仮想記憶空間の分離していないOSに限定しないと無理です。

Re: exe内でdellとしてエクスポート

Posted: 2013年5月19日(日) 14:21
by YuO
__declspec(dllexport)すればできますが……。
できないのは,.DEFファイルによる名前の制御くらいでしょうか。


と書いていたら,トピックに記事が追加されていて,意味が違っていたようですね。

DLLは実行時リンクであって,プロセス間通信機構ではないので,「別プロセス」である以上「dllのように」という表現が不適切です。
RPC (Remote Procedure Call) はRPCでWindowsはいくつかの機構を持っていますし,TCP/IP等を使って作り込むこともできます。
ただし,RPCは専用のコードが必要になるので,クライアント側が実装したところでそのまま使えるわけではありません。
RPCサーバー側にも専用コードが必要になります。

Re: exe内でdellとしてエクスポート

Posted: 2013年5月19日(日) 14:26
by def
起動中のexeから呼び出すのではなく、exe からdll を呼び出すように、稼働中出ないexe をたたいて、関数を呼び出す。
つまり、exe としては単体でつかえ、またdll としての振る舞いもできるexeはつくれるのでしょうか?
分かりにくかったらすみません。

Re: exe内でdellとしてエクスポート

Posted: 2013年5月19日(日) 14:29
by softya(ソフト屋)
def さんが書きました:起動中のexeから呼び出すのではなく、exe からdll を呼び出すように、稼働中出ないexe をたたいて、関数を呼び出す。
つまり、exe としては単体でつかえ、またdll としての振る舞いもできるexeはつくれるのでしょうか?
分かりにくかったらすみません。
それならDLLを使ったほうが楽ですが、どうしてもメモリの常駐するのは嫌なのでしょうか?
それの意図する機能を説明してもらった方がアイデアが出せると思います。

Re: exe内でdellとしてエクスポート

Posted: 2013年5月19日(日) 15:29
by YuO
def さんが書きました:起動中のexeから呼び出すのではなく、exe からdll を呼び出すように、稼働中出ないexe をたたいて、関数を呼び出す。
つまり、exe としては単体でつかえ、またdll としての振る舞いもできるexeはつくれるのでしょうか?
できますよ。先ほど私の添付したソリューションがそのまんま例になっています。
コードで言うなら,__declspec(dllexport)を関数に付ければよいです。

あと,DEFファイルも使えました。
通常のDLLで書くLIBRARY節を削除し,プロジェクトのプロパティで構成プロパティー/リンカー/入力/モジュール定義ファイル欄に追加することで利用可能です。

Re: exe内でdellとしてエクスポート

Posted: 2013年5月19日(日) 15:46
by softya(ソフト屋)
YuO さんが書きました:
def さんが書きました:起動中のexeから呼び出すのではなく、exe からdll を呼び出すように、稼働中出ないexe をたたいて、関数を呼び出す。
つまり、exe としては単体でつかえ、またdll としての振る舞いもできるexeはつくれるのでしょうか?
できますよ。先ほど私の添付したソリューションがそのまんま例になっています。
コードで言うなら,__declspec(dllexport)を関数に付ければよいです。

あと,DEFファイルも使えました。
通常のDLLで書くLIBRARY節を削除し,プロジェクトのプロパティで構成プロパティー/リンカー/入力/モジュール定義ファイル欄に追加することで利用可能です。
あぁ、そうか。たしかに気持ち悪いけど出来ますね。
失礼しました。

Re: exe内でdellとしてエクスポート

Posted: 2013年5月19日(日) 16:03
by def
ありがとうございます。
可能だということで、創造意欲がわいてきました。

exe を開発していて、その関数を外部からも利用でき、さらに、開発が一つのプロジェクトでできたら、コンパイルが一回で済むとのアイデアからの質問でした。