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

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

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

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

1回答

4170閲覧

C++のdllからVB.netのdllを呼ぶ際、置き場所の指定方法がわからくて困っています。

daqiao

総合スコア12

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2016/03/04 04:47

実際には、Aサーバー上のXフォルダに有るexe(COBOLにて作成)より、Bサーバー上のYフォルダに有るdll(C++)を呼出して、更に同じくBサーバーYフォルダに有る別のdll(vb.net)を呼び出したいのです。
ここで、cobol.exe から c++.dllはcobolの機能でフルパス指定をすれば呼出せたのですが、その先のc++.dll からvb.dllのクラスを呼び出そうとすると、どうしても元のcobol.exeのあるフォルダを見に行ってしまいます。
本来であれば、cobol.exeとvb.dllに必要なロジックが書かれており、直接呼び出したい所なのですが、cobolから呼ぶ為のエントリーポイントをvbでは作成出来ず、仕方なく間にc++を経由しています。
環境は、AサーバーがWindows Server 2008 R2 64bit,BサーバーはWindows Server 2008 R2 32bit,開発環境はVisual Studio 2010,.NET Framework4.0にてc++,VBとも作成しております。

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

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

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

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

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

guest

回答1

0

どうしても元のcobol.exeのあるフォルダを見に行ってしまいます。

ということは、その場所にdllを配置すると呼び出せたという意味と捉えて良いのですよね?

DLLの呼び出し方は、明示的と暗黙的とありますが、フルパスで指定できたということは明示的な方法もご理解できているということと考えて良いですね?

その上で、

c++.dll からvb.dllのクラスを呼び出そうとすると、どうしても元のcobol.exeのあるフォルダを見に行ってしまいます。

c++.dllからフルパスでvb.dllを呼び出そうとした時に、どのようなエラーが出るのでしょうか?
また、複雑な構成で問題がある場合には単純化して確認していくのが鉄則ですので、cobol.exeではなく、別の単純なc++.DLLを呼び出すだけのexeを作成しても同様の問題が発生するのでしょうか?
さらに、サーバと言う言葉がでてきますが、そのような際にはアクセス権限が問題となることも多いので、その辺りは切り分けられているのでしょうか?

投稿2016/03/05 04:38

t_obara

総合スコア5488

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

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

daqiao

2016/03/07 00:12

ご回答ありがとうございます。 エラーと言うか、cobol.exeのあるフォルダにvb.dllを配置せず実行していますので、dllが見つからないと言われます。後、最初はアクセス権を考えずにやっていましたが、途中で気づき該当フォルダへフルコントロールの権限を与えましたが駄目でした。cobolからはフルパスの指定方法がわかっているのですが、c++からvbを呼ぶ際のパス指定の方法は、すみません正直わかっていません。 宜しくお願いします。
t_obara

2016/03/07 01:17

明示的な呼び出しの場合、dllファイルを指定するので、その際にパスも含めて指定すれば良いと思います。 暗黙的な場合には、Windows環境変数として、PATHに指定することになります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問