質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Basic .NET

Microsoft Visual Basic .NET (VB.NET)とはオブジェクト志向のプログラム言語です。 Microsoft"s Visual Basic 6 のバージョンアップとしてみることができますが、Microsoft.NET Frameworktによって動かされています。

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

1回答

5883閲覧

<visualstudio>オープンソースを使ったアプリケーションの配布方法について

Dra

総合スコア75

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Basic .NET

Microsoft Visual Basic .NET (VB.NET)とはオブジェクト志向のプログラム言語です。 Microsoft"s Visual Basic 6 のバージョンアップとしてみることができますが、Microsoft.NET Frameworktによって動かされています。

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2015/07/03 11:44

現在visual studio2012proでオープンソースのdllを使用したアプリケーションを作成しています。
自分のPCでは、環境パスをそのオープンソースのフォルダに対して設定しており、当然、自分のPCではexeを押して実行させることが可能です。

①今回質問したいのは、自分以外のPC(オープンソースのdllが入っていないPC)に対して、どのようにしてアプリケーションを実行させるのかになります。
他のPCでは、できれば、環境変数のパスもいじりたくないです。

②プロジェクト内にdllを追加して、参照の設定を変更するだけで動くのでしょうか?(ただ、参照設定でそのdllを読もうとするとエラーになるんですよね。実行時に使用されるdllだから、あたりまえなのでしょうが。ではどうすればいいか気になります)

③オープンソース内を見ていて気になったのが、exeファイルがdllと一緒に入っていることです。このexeファイルは、もしかして実行時に使われているのでしょうか?

ご教示いただければ幸いです。
宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

(そのオープンソースの)
DLLは特定のフォルダにある必要があります。開発した(|している)Exeファイルと同じフォルダ
やシステムフォルダ、ウィンドウズフォルダにDLLがなければ、Exeプログラムは異常終了します。
これはデバッグ時でもなんでも同じです。

パスを通してある場合にどうなっているのか、ちょっとよくはわかりません。

③についてですが、
DLLに添付していたEXEファイルがあるとの事ですが、その添付EXEプログラムをDLLが呼び出している可能性は否定できません。
EXEプロセスをDLLから起動して、EXEは自ら例えばポートをlocalhost内にオープンして、そのEXEプログラムとの通信を行うケース
はないと言い切れません。ポートに限らず、プロセス間通信をするサーバとして働いている可能性はあります。

そのオープンソースのプログラムが、どのような構造なのか分かりません。
オープンソースのプログラムには
インストールするmsiやらexeプログラムが添付していて、それらを使ってインストールしたマシンだけが
冒頭「オープンソースのdll」の動作保証をしている対象かもしれません。

インストーラが付属しているのであれば、そのインストーラはパスを自動で設定するだけでなく、
WindowsシステムディレクトリやWindowsディレクトリにDLLファイルを(別途知らぬ間に)コピーしているものも
あるのかもしれません。

配布時にDLL用に向けてパスの設定などを変更したくなければ、Windowsシステムディレクトリに向けてDLL等をコピーする
バッチファイル等を追加するか、インストーラにコピーするよう指示するか。等も考えられます。

差支えなければ、どのようなオープンソースなのか、うかがわせてください。
時間があるときに構造をさっと見てみたいです。

投稿2015/07/03 14:53

TakahiroOhashi

総合スコア35

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Dra

2015/07/04 09:11 編集

ご丁寧にありがとうございます。 風邪でダウンしてるので実験できないのですが、治ったらやってみます。 名前はopencvです。 最新の3を入れました。インストーラーもついてましたね 見てもらえると嬉しいです。 またご報告させていただきますね
Dra

2015/07/06 03:21

追記です。 実験やってみました。 dllを実行ファイルと同じフォルダに入れたところ、正常に読み込まれ、無事に動くことができました。 レジストリも汚さないので、一番良い形でできたと思います。 ありがとうございました。 オープンソースのexeは必要ないみたいです。 今回リリースモードを使ってみましたが、デバッグモードで設定したオプションがクリアになってしまい、エラーがでなくなる設定を行うのに非常に時間がかかりました。(これは知らなかったです)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問