質問: 実際には、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とも作成しております。
回答: > > どうしても元のcobol.exeのあるフォルダを見に行ってしまいます。 > > > ということは、その場所にdllを配置すると呼び出せたという意味と捉えて良いのですよね? DLLの呼び出し方は、明示的と暗黙的とありますが、フルパスで指定できたということは明示的な方法もご理解できているということと考えて良いですね? その上で、 > > c++.dll からvb.dllのクラスを呼び出そうとすると、どうしても元のcobol.exeのあるフォルダを見に行ってしまいます。 > > > c++.dllからフルパスでvb.dllを呼び出そうとした時に、どのようなエラーが出るのでしょうか? また、複雑な構成で問題がある場合には単純化して確認していくのが鉄則ですので、cobol.exeではなく、別の単純なc++.DLLを呼び出すだけのexeを作成しても同様の問題が発生するのでしょうか? さらに、サーバと言う言葉がでてきますが、そのような際にはアクセス権限が問題となることも多いので、その辺りは切り分けられているのでしょうか?