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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
def

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

#1

投稿記事 by def » 13年前

exe内で内部の関数をdellのようにエクスポートは可能性でしょうか?
ネット検索ではハッキリしなかったので、経験のあるかたにおうかがいします。

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

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

#2

投稿記事 by h2so5 » 13年前

dellではなくてDLLの間違いでは?
exeで関数をエクスポートするという意味がよくわかりません。どうやって関数を使うのでしょうか?

def

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

#3

投稿記事 by def » 13年前

普通exeからdll 内の関数を呼び出しますが
exe から他プロセスのexe 内にある関数を呼び出すことは可能でしょうか?という意味でした。言葉足らずですみません。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#4

投稿記事 by softya(ソフト屋) » 13年前

def さんが書きました:普通exeからdll 内の関数を呼び出しますが
exe から他プロセスのexe 内にある関数を呼び出すことは可能でしょうか?という意味でした。言葉足らずですみません。
それは無理というか、一般的なOSだと仮想記憶空間を跨ぐので仮想記憶空間の分離していないOSに限定しないと無理です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

YuO
記事: 947
登録日時: 15年前
住所: 東京都世田谷区

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

#5

投稿記事 by YuO » 13年前

__declspec(dllexport)すればできますが……。
できないのは,.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) ダウンロード数: 169 回

def

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

#6

投稿記事 by def » 13年前

起動中のexeから呼び出すのではなく、exe からdll を呼び出すように、稼働中出ないexe をたたいて、関数を呼び出す。
つまり、exe としては単体でつかえ、またdll としての振る舞いもできるexeはつくれるのでしょうか?
分かりにくかったらすみません。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#7

投稿記事 by softya(ソフト屋) » 13年前

def さんが書きました:起動中のexeから呼び出すのではなく、exe からdll を呼び出すように、稼働中出ないexe をたたいて、関数を呼び出す。
つまり、exe としては単体でつかえ、またdll としての振る舞いもできるexeはつくれるのでしょうか?
分かりにくかったらすみません。
それならDLLを使ったほうが楽ですが、どうしてもメモリの常駐するのは嫌なのでしょうか?
それの意図する機能を説明してもらった方がアイデアが出せると思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

YuO
記事: 947
登録日時: 15年前
住所: 東京都世田谷区

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

#8

投稿記事 by YuO » 13年前

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

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#9

投稿記事 by softya(ソフト屋) » 13年前

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

あと,DEFファイルも使えました。
通常のDLLで書くLIBRARY節を削除し,プロジェクトのプロパティで構成プロパティー/リンカー/入力/モジュール定義ファイル欄に追加することで利用可能です。
あぁ、そうか。たしかに気持ち悪いけど出来ますね。
失礼しました。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

def

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

#10

投稿記事 by def » 13年前

ありがとうございます。
可能だということで、創造意欲がわいてきました。

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

閉鎖

“C言語何でも質問掲示板” へ戻る