exe内で内部の関数をdellのようにエクスポートは可能性でしょうか?
ネット検索ではハッキリしなかったので、経験のあるかたにおうかがいします。
exe内でdellとしてエクスポート
Re: exe内でdellとしてエクスポート
dellではなくてDLLの間違いでは?
exeで関数をエクスポートするという意味がよくわかりません。どうやって関数を使うのでしょうか?
exeで関数をエクスポートするという意味がよくわかりません。どうやって関数を使うのでしょうか?
-
def
Re: exe内でdellとしてエクスポート
普通exeからdll 内の関数を呼び出しますが
exe から他プロセスのexe 内にある関数を呼び出すことは可能でしょうか?という意味でした。言葉足らずですみません。
exe から他プロセスのexe 内にある関数を呼び出すことは可能でしょうか?という意味でした。言葉足らずですみません。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: exe内でdellとしてエクスポート
それは無理というか、一般的なOSだと仮想記憶空間を跨ぐので仮想記憶空間の分離していないOSに限定しないと無理です。def さんが書きました:普通exeからdll 内の関数を呼び出しますが
exe から他プロセスのexe 内にある関数を呼び出すことは可能でしょうか?という意味でした。言葉足らずですみません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: exe内でdellとしてエクスポート
__declspec(dllexport)すればできますが……。
できないのは,.DEFファイルによる名前の制御くらいでしょうか。
と書いていたら,トピックに記事が追加されていて,意味が違っていたようですね。
DLLは実行時リンクであって,プロセス間通信機構ではないので,「別プロセス」である以上「dllのように」という表現が不適切です。
RPC (Remote Procedure Call) はRPCでWindowsはいくつかの機構を持っていますし,TCP/IP等を使って作り込むこともできます。
ただし,RPCは専用のコードが必要になるので,クライアント側が実装したところでそのまま使えるわけではありません。
RPCサーバー側にも専用コードが必要になります。
できないのは,.DEFファイルによる名前の制御くらいでしょうか。
と書いていたら,トピックに記事が追加されていて,意味が違っていたようですね。
DLLは実行時リンクであって,プロセス間通信機構ではないので,「別プロセス」である以上「dllのように」という表現が不適切です。
RPC (Remote Procedure Call) はRPCでWindowsはいくつかの機構を持っていますし,TCP/IP等を使って作り込むこともできます。
ただし,RPCは専用のコードが必要になるので,クライアント側が実装したところでそのまま使えるわけではありません。
RPCサーバー側にも専用コードが必要になります。
- 添付ファイル
-
- Win32Project1.zip
- Visual Studio 2012 Express for Windows Desktop Solution
- (4.71 KiB) ダウンロード数: 168 回
-
def
Re: exe内でdellとしてエクスポート
起動中のexeから呼び出すのではなく、exe からdll を呼び出すように、稼働中出ないexe をたたいて、関数を呼び出す。
つまり、exe としては単体でつかえ、またdll としての振る舞いもできるexeはつくれるのでしょうか?
分かりにくかったらすみません。
つまり、exe としては単体でつかえ、またdll としての振る舞いもできるexeはつくれるのでしょうか?
分かりにくかったらすみません。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: exe内でdellとしてエクスポート
それならDLLを使ったほうが楽ですが、どうしてもメモリの常駐するのは嫌なのでしょうか?def さんが書きました:起動中のexeから呼び出すのではなく、exe からdll を呼び出すように、稼働中出ないexe をたたいて、関数を呼び出す。
つまり、exe としては単体でつかえ、またdll としての振る舞いもできるexeはつくれるのでしょうか?
分かりにくかったらすみません。
それの意図する機能を説明してもらった方がアイデアが出せると思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: exe内でdellとしてエクスポート
できますよ。先ほど私の添付したソリューションがそのまんま例になっています。def さんが書きました:起動中のexeから呼び出すのではなく、exe からdll を呼び出すように、稼働中出ないexe をたたいて、関数を呼び出す。
つまり、exe としては単体でつかえ、またdll としての振る舞いもできるexeはつくれるのでしょうか?
コードで言うなら,__declspec(dllexport)を関数に付ければよいです。
あと,DEFファイルも使えました。
通常のDLLで書くLIBRARY節を削除し,プロジェクトのプロパティで構成プロパティー/リンカー/入力/モジュール定義ファイル欄に追加することで利用可能です。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: exe内でdellとしてエクスポート
あぁ、そうか。たしかに気持ち悪いけど出来ますね。YuO さんが書きました:できますよ。先ほど私の添付したソリューションがそのまんま例になっています。def さんが書きました:起動中のexeから呼び出すのではなく、exe からdll を呼び出すように、稼働中出ないexe をたたいて、関数を呼び出す。
つまり、exe としては単体でつかえ、またdll としての振る舞いもできるexeはつくれるのでしょうか?
コードで言うなら,__declspec(dllexport)を関数に付ければよいです。
あと,DEFファイルも使えました。
通常のDLLで書くLIBRARY節を削除し,プロジェクトのプロパティで構成プロパティー/リンカー/入力/モジュール定義ファイル欄に追加することで利用可能です。
失礼しました。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
def
Re: exe内でdellとしてエクスポート
ありがとうございます。
可能だということで、創造意欲がわいてきました。
exe を開発していて、その関数を外部からも利用でき、さらに、開発が一つのプロジェクトでできたら、コンパイルが一回で済むとのアイデアからの質問でした。
可能だということで、創造意欲がわいてきました。
exe を開発していて、その関数を外部からも利用でき、さらに、開発が一つのプロジェクトでできたら、コンパイルが一回で済むとのアイデアからの質問でした。