• ベストアンサー

Visual C++からDLLを呼び出す

こんにちは。 VC++初心者です。 どなたか教えてください! VC++でAA.DLLというのを作成して、これをC:\TEST\に置いたとします。 次にBB.DLLというのを作って、この中でAA.DLLを呼び出したいのですが、どのような設定をすればよろしいのでしょうか? BB.DLLをどこに置いてもAA.DLLを呼び出したいんです。絶対パスで指定を指定するのかなぁと思うのですが、どこをどう設定していいのかわかりません。 ちなみにAA.DLLとBB.DLLが同じフォルダ内にある場合はうまくいきます。

noname#23059
noname#23059

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

こんばんわ。 #1さんの補足です。 AA.DLLを、環境変数PATHで指定したディレクトリに置けば、BB.DLLはどこにあってもかまいません。 環境変数PATHを確認するには、 (1)DOSプロンプトで、PATHコマンドを実行する。 (2)マイコンピュータのプロパティ→詳細→環境変数で確認する。(windows2000の場合) などです。 ご使用のWindowsによって確認方法は異なりますが、ご確認ください。 AA.DLLをどうしてもc:\TESTの中に置きたいのでしたら、環境変数PATHに、c:\TESTを追加してやれば、BB.DLLがどこにあっても呼び出しが可能となります。

noname#23059
質問者

お礼

ありがとうございます。 やはりパスを通すしか方法ないようですね。

その他の回答 (1)

回答No.1

AA.DLLを「環境変数PATHで指定したディレクトリのどれか」に置きます。

noname#23059
質問者

お礼

ありがとうございます

関連するQ&A

  • VC++で作成したDLLについて

    すみません、 VC++6.0で作成したDLLについて教えていただきたいのですが。 TEST_A.DLLというDLLと、TEST_B.DLLというDLLファイルを作成したとして これをC:\TEST\DLL\に格納してるとします。 このとき、TEST_B.DLLからはTEST_A.DLLの関数を呼び出しています。 次に、TEST_B.DLLの関数を使用しているTEST.EXEという実行ファイルを VB6.0で作成します。 このファイルをC:\TEST\EXE\に格納します。 そして、TEST.EXEを実行すると、 「TEST_B.EDLLが見付かりません」と言って怒られてしまいます。 VBでは、TEST_B.DLLをフルパスで指定しております。 しかし、TEST_A.DLLをEXEと同じ場所に置いてあげると 正常に動きます。 これは、TEST_B.DLLからTEST_A.DLLが見えていないということなのでしょうか? TEST_B.DLLの設定がおかしいのでしょうか? それとも、TEST.EXEでもTEST_A.DLLをフルパス指定してあげないといけないのでしょうか? ちなみに今回、プロジェクトマネージャーから「環境変数(PATH)の設定はしたくない」と言われていますので、PATHの指定はしてません。 すみませんが、どなたか教えていただけますでしょうか?

  • CのEXEからC#のDLLを呼び出す

    C及びC#のPGは初心者ですが、宜しくお願いします。 現在、Cで作成したEXEからC#で作成したDLLを参照するとエラーが発生します。ただ、EXEとDLLを同じフォルダ内に配置すると正常に動作します。DLLを別のフォルダに配置するとエラーが発生します。 CがC#のDLLのPathが分からないからエラーが発生していると思っているのですが、Cのプロジェクトで何を設定したらいいのか、全然分かりません。 宜しくお願いします。

  • C++/CLIのDLLをC#で使う

    C++/CLIのDLLをC#で使う ソリューションの中にC++/CLIでクラスを作成し、出力がDLLのプロジェクトと、 C#でGUI画面の処理のプロジェクトがあります。 このときC#側でC++/CLI側で作ったDLLを使用したいのですが、やり方がわかりません。 DLL自体はC#のDebugフォルダに入っており、参照設定で読み込んでいます。 ご教授のほど、よろしくお願いいたします。

  • CLASSPATHと環境変数について

     Java初心者です、宜しくお願いします。  SJC-Pの問題です、以下の問題の意味が分かりません。 <問題>  現在CLASSPATH環境変数に設定されているパスが/AA/BBとします。  Testクラスが/AA/BB/CC/DDにあり、カレントディレクトリが/AAである場合、 次のプログラムTestが正しく実行される回答を選べという問題があります。  ===================================================  Package CC.DD ;  public class Test {   public static void main (String[] args) {  System . out . print(“java”) ;  }  }  ===================================================  答えは「java CC . DD . Test」なのですが、「現在CLASSPATH環境変数に設定されている パスが/AA/BBとします。」という意味が理解できません。  「現在CLASSPATH環境変数に設定されているパス」とはどのような意味でしょうか。  現在フォルダは、/CC/DDしか作成されていないという意味でしょうか、それにしても、 設問は「Testクラスが/AA/BB/CC/DDにあり」と書かれていることから、既にCC/DDフォルダ は、 BBフォルダの直下に作成されていると考えるのが正しいと思うのですが。  そもそも、「現在CLASSPATH環境変数に設定されているパス」とは、どのような意味を持つ のでしょうか。  以上宜しくお願いします。

    • ベストアンサー
    • Java
  • c++のdllが参照できません

    c++で作成したDLLをVBから参照したいのですが、 VBでの宣言はうまくいっていて自分の端末では動作するのに 他のPCではDLLがありませんとエラーがでるのですが System32の直下にDLLはありsystem32直下の他のC++のDLLは参照できるのに 今回新規で作成したものに関してうまくVBがDLLをみつけることが できません 条件は自分の端末とあわせました。 パスの指定など必要なのでしょうか? アドバイスください

  • Visual Basic6.0で作ったデータをVisual C 6.0を用いて通信したい(DLLファイルを作成)

    Visual C 6.0 Visual Basic 6.0 WindowsXP 掲題の件ですが、 VBで作成したデータをVCで通信したいと思い、 値を受け渡すにはDLLファイルを作って関数の戻り値にすれば良いと調べて分かり、 作成方法を知りたく質問させていただきました。 まず、 ・どちらのプログラムでDLLファイルを作成したらいいか ・どのようにコードを記述して作成したら良いか(VB,VC) VCで一度作成しようと思い、サンプルコードを調べ、ビルドしたところ 「デバック・・・実行可能ファイル・・・」 と表示されファイルを選ばなければいけない画面になりました。 これはどれを選択すれば良いのでしょうか。 よろしくお願い致します。

  • ダイアログベースアプリのDLL化の方法について

    ダイアログベースで作成してあるアプリexeを DLL化するのですが、その方法が分かりません。 ダイアログの使用はやめるつもりです。 これまでやってみたことは、 プロジェクトのプロパティで、EXEファイルからDLLに設定を 変更しました。 http://hp.vector.co.jp/authors/VA019517/howtodll.html サンプルを見て、既存のソースに__stdcallなどを記載したいのですが DLLが作成されませんでした。 新規にプロジェクトを作成して、サンプル通りにやった場合は DLLが作成されました。 呼び出したい関数は、別々のファイルですが、 1つのファイルにまとめる必要がありますか? ダイアログベースはやめます。 この2つの関数は、同じDLLにします。 ↓DLL化するソース。ここを外部EXEから呼び出したい。 Test_aa_App.cpp --------------------------------------- CTest_aa_App::InitInctance(){ //初期化処理 } ↓呼び出し対象DLL Test_bb_Dlg.cpp -------------------------------- CTest_bb_Dlg::Test() { // 処理 } 初歩的なことだと思いますが、まず、どのように ソースを変更すれば良いか教えてください。 VS2003 C++6.0 よろしくお願いします。

  • C++のDLLが見つからないVBAから見つからない

    こんにちは。質問させてください。 Visual C++ 2008 Express Editionで自作DLLを作成しました。 このDLLが、開発環境(WindowsXP、Excel2002)の Excelマクロで呼び出したところ、うまく動いたのですが、 WindowsVista、Excel2007のPCで同じマクロを実行すると 実行時エラー '53' ファイルが見つかりません [ファイル名] というエラーが出て実行できません。 どちらの環境でもDLLファイルはフルパスで指定していて ファイルはちゃんと存在しています。 原因が、Vistaなのか、Excel2007なのか またはその他の要因なのか、わからずに悩んでいます。 どなたか心当たりがある方がいらっしゃいましたらご教授願います。 よろしくお願いします。 その他詳細 ・DLLはdefファイルを使ってEXPORTしました。 ・Vistaのユーザーアカウント制限をoffにしてます。 ・Declear部分のソースコードは Declare Sub Prepare Lib "C:\test\API_test.dll" (ByVal FileName As String)です。

  • IronPython でのDLL の使用について

    Visual Basic 2010 でDLLを作成し,IronPython 2.6 で使用したいのですがエラーが出て動きません。 何かアドバイスがありましたらお願いします。 ・DLLの作成 Visual Basic の新規プロジェクトを”クラスライブラリ”として作成 (.NET Framework 2.0) Public Class aaa Public Sub bbb() MsgBox("AAA") End Sub End Class ・IronPython での呼び出し側 import os import clr import sys clr.AddReferenceByPartialName("Microsoft.VisualBasic") from Microsoft.VisualBasic import Interaction sys.path.append(os.path.dirname(os.path.abspath(__file__))) clr.AddReferenceToFile("test_VB.dll") import test_VB aa = test_VB.aaa aa.bbb() 実行すると, TypeError: bbb() takes exactly 1 argument (0 given) となってしまいます。 bbb()定義時には何も引数を指定していないのですが, 何を渡せばいいでしょうか? よろしくお願いします。

  • エクセルVBA実行時のエラー:DLLファイルが見つ

    タイトル:エクセルVBA実行時のエラー:DLLファイルが見つかりません  質問させていただきます。どうぞよろしくお願いいたします。 環境:PC1~3の全てが、Excel2010、Win7になります。 初めてVBAから読み込むためのDLLファイルを作成いたしました。    PC1上で動作確認できている2つのファイル(Test4.dll(VC++2013にて作成)と それを呼び出すVBAのついたエクセルファイル)を、 PC2とPC3に移動し、VBAを実行しましたところ 何故かPC3でのみ下記エラーが発生いたします。 >実行時エラー'53' >ファイルが見つかりません。Test4.dll ・2つのファイルは同じフォルダ内で実行しております。 ・VBAのカレントパスは   ChDrive Left(ThisWorkbook.Path, 1)   ChDir ThisWorkbook.Path で変更しております。  試しにC:\Windows\System32と C:\Windows\SysWow64にも Test4.dllをコピペしてみましたが、同じエラーが出てまいります。 ・PC3のみ違うところを探してみましたが、思いつくのは下記くらいでございます。   1.VSが入っておりませんでした。(必要なのでしょうか??)   2.実行しているパスが違います。     PC1とPC2の実行パス:      D:\Users\Administrator\Documents\VBA_TEST     PC3の実行パス:      D:\Documents\VBA_TEST              もし何か原因として思いつかれる事がございましたらお教えいただけないでしょうか。 お詳しい方がいらっしゃいましたら何卒よろしくお願いいたします。

専門家に質問してみよう