• ベストアンサー

DLLのLIBRARYの役目

; test.def LIBRARY "test" DESCRIPTION 'test Windows Dynamic Link Library' EXPORTS LIBRARY "test" は、何でもよいのでしょうか? 何かの識別子になるのでしょうか?

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

  • ベストアンサー
  • BLK314
  • ベストアンサー率55% (84/152)
回答No.2

通常はdefファイルは不要です。 http://msdn.microsoft.com/ja-jp/library/28d6s79h(VS.80).aspx ただし、VB6等一部の言語とリンクする際には 必要な場合もあります。

その他の回答 (1)

  • chie65535
  • ベストアンサー率43% (8525/19381)
回答No.1

.defファイルのLIBRARY文の書式について http://msdn.microsoft.com/ja-jp/library/30fw19zw(VS.80).aspx >LIBRARY "test" >は、何でもよいのでしょうか? >何かの識別子になるのでしょうか? ここに記述した名前で、DLLのインポートライブラリが作成されるので、名前が不一致の場合、C(やC++など)からDLLを呼び出せなくなります。

関連するQ&A

  • VB6から参照可能なDLLの作成

    VB6から参照可能なDLLの作成を参考書をみながらしましたが、上手くいかない為質問させていただきます。 開発環境VC++ 2005 C++ CTEST.dll #include <windows.h> __declspec (dllexport) int __stdcall test(int i) { i = i + 5; return i; } .defファイル LIBRARY "test" DESCRIPTION EXPORTS A 以上でDLLを作成し、VB6側で Private Declare test Lib "CTEST.dll" (ByVal i as integer) で宣言しても「エラー53 ファイルがみつかりません」と表示されます。「参照の追加」から参照しようとしても「このファイルは参照できません。」をエラーがでてしまいます。 直すべき点はどの部分なのでしょうか? ご教示ねがいます。

  • ライブラリとdllは同じものですか?

    初心者です ライブラリとdllは同じものですか? windowsのライブラリとappleのライブラリは違うものですか?

  • DLLについて

    現在APIの勉強中なのですが不明な部分が出てきました。 今、単純な音を鳴らす関数beepをDLLファイルにExportするプログラムを作っているのですが、DLLファイルのExportをDEFファイルにて行うようプログラムを行いました。 DEFファイルの内容を以下に示します。 ----beepll.def------ LIBRARY beepdll EXPORTS beep @3 このDEFファイルを用いて作成したbeepdll.dllファイルをDUMPBIN.EXEを使用して中身を見たところ次のように表示されました。 File Type: DLL Section contains the following exports for beepdll.dll 00000000 characteristics 45B09596 time date stamp Fri Jan 19 18:55:34 2007 0.00 version 3 ordinal base 1 number of functions 1 number of names ordinal hint RVA name 3 0 00001000 beep = ?beep@@YGXG@Z (void __stdcall beep(unsigned sho rt)) Summary 1000 .data 1000 .rdata 1000 .reloc 1000 .rsrc 1000 .text これを見ると確かに序数は"3"になっているのですがEXPORT名がbeepになっていないように見えるのですが、これで正常なのでしょうか? 環境は Visual C++.NET 2005です。 DEFファイルはビルド前に、[プロジェクト]→[---のプロパティ]→[構成プロパティ]→[リンカ]→[入力]→[モジュール定義ファイル]にて定義しました。

  • ダイナミックリンクライブラリー SwDll.dll が見つかりません。

    お世話になります。 windowsにて、あるソフトを実行しようとした際、 ダイナミックリンクライブラリーSwDll.dllが、 パスに見つかりません。というエラーメッセージが 出ます。 どちらかで入手して、投入できるものでしょうか? 宜しくお願い致します。

  • DLL VBとC++

    VBAからVC++2005のDLLを呼び出すプログラムを書いています。 VB側で作成したcpp_proc関数を呼ぶとVBアプリ自体が落ちました。 DLLのreturnの直前に以下のMessageBoxで表示させるとそこまでは表示され、 リターンを押すと、落ちました。 VB側の引数の値 String * 8192が悪いのでしょうか? return直前まで動作していたので、DLLの戻り値に何か原因があるのでしょうか? ついでの質問ですが、DEFの @1は無くても動くのでしょうか? 意味が知りたいです。 // ----- C++ (DLL側) ----- int __stdcall cpp_proc(LPCSTR inp, LPSTR out) { ... 省略 MessageBox(0, "ここまで通過", "debug", MB_OK); return 0; } // ----- DEF ----- LIBRARY "example" DESCRIPTION 'テスト' EXPORTS ; 明示的なエクスポートはここへ記述できます cpp_proc @1 '----- VB側 ----- Public Declare Function cpp_proc Lib "example.dll" _ (ByVal inp As String, ByRef out As String) As Integer Public Sub Test() Dim ret As Integer Dim inp As String Dim out As String * 8192 ret = cpp_proc(inp, out) MsgBox("ret=[" & Cstr(ret) & "]"); End Sub

  • 静的リンクライブラリについて

    WindowsのライブラリにDLLやLIBといった形式があり、それぞれ「動的リンクライブラリ」「静的リンクライブラリ」となっていますが、 静的リンクライブラリとしてビルドされたライブラリを、動的に実行プログラムにリンクさせることは(Cやアセンブラなどの)実装次第で可能なのでしょうか? ビルド時にリンカがやってくれてることを実行時に行えればOK・・・という素直な話ではないのでしょうか。DLLも実行時にGetProcAddress()などを使ってアドレス解決をするわけですし、LIBでも同じことをするのは不可能ではないのでは?と思ったのです。 ※動的/静的リンクの概念や具体的な使用方法などはネット上で調べることができましたが、中身にまで踏み込んだ解説をしているページには巡り合えませんでした。そういう具体的な解説のあるページの紹介だけでもとても助かります。また、「根本的に思い違いをしてるんでは?」というご指摘も非常に助かります。 ※私自身↑に対する需要はないのでコスト・メリットとかは度外視です。興味本位というやつです。 ※別段、Windowsやライブラリの形式にこだわりがあるわけではないですが、これが一番メジャーだろう、ということでWindowsのDLL/LIBを対象に質問させて頂きました。 よろしくお願いします。

  • Unix上C++でのdllとインポートライブラリの関係

    こんにちわ。 いつも教えてgooにお世話になっているorange_pieです。 UNIX上のC++で作成した自作ライブラリをdllにして配布したいのですが、 Unixでの基本的な考え方を教えてください。 (1)Unix上ではDLLの標準的な名称は”libxxxx.so”とするのが普通ですか?  ※この形式ならLD_LIBRARY_PATH環境変数が検索してくれる。。。 (2)通常、DLLにする場合、インポートライブラリ(.lib)と実際のライブラリ(.so)を作成して、使用する側はインポートライブラリのみをリンクするのでしょうか? (3)配布されたdllを使う側では、Link時にインポートライブラリをリンクして、関連インクルードファイルをインクルードするだけで使えるのでしょうか? (4)上記の(2)のように、インポートライブラリとライブラリの実態を作成する為のコンパイルオプションが見つかりません。(ldのmanを見たのですが、意味がわからないと言うか。。。。。) この質問は、自作ライブラリからlibxxx.soという形のオブジェクトファイルを作り、別プログラムからこのlibxxxをコンパイルオプション(-l)でリンクしてみたら正しく動作したのですが、これでは結局ライブラリの本体が一緒にリンクされている様子で、出来上がった実行形式のファイルサイズが静的ライブラリとしてリンクした時と同じ大きさになっていることに疑問を抱いてしまったものです。  この状態でも、ライブラリの方だけコンパイルしなおして実行すると ちゃんとライブラリの変更点は反映されるので問題は無いのですが、 これでもダイナミックリンク・ライブラリと呼べるのでしょうか?

  • iTunesのライブラリについて

    iTunesのライブラリを外付けHDDに保存しているのですが、リンクが切れてしまい開くことが出来なくなってしまいました。 以前、リンク切れが起こった際は、iTunes起動時に「どこのライブラリを読みますか??」みたいなメッセージが出て、外付けHDDにリンク付けすることが出来たのですが、今は何のメッセージも無く、何のデータも読み込まないままiTunesだけ起動してしまっています。 外付けHDDではデータはきちんと確認できているのですが、iTunesをどうやって外付けHDDにリンク付けし直せば良いのか良くわかりませんので、外付けHDDのライブラリにリンク付けする(ライブラリを読む)方法を教えてください。 因みに環境は、Windows Vista、 ItunesのVersionは 10.3.1.55です。 宜しくお願いいたします。

  • OCUnitでのStatic Libraryのテストについて

    OCUnitでのStatic Libraryのテストについて OCUnitを使ってMacOSX向けのライブラリのテストを行おうと思っています。 http://sites.google.com/site/smgakusyuu/ocunit を参考にしていろいろ試しているのですが、 ターゲット:単体テスト の設定が今一よくわかりません。 項目「テストホスト」に、テスト対象のライブラリを指定したら、リンクが通るようになりましたが、 「バンドルローダ」に実行可能ファイルを指定しないとテストが開始されないようです。 どのように設定したらよいか、ご教示いただけないでしょうか。 環境 OS: Mac OS X(10.5.8) XCode: 3.0 (IDE: 921.0, Core: 921.0, ToolSupport: 893.0)

  • ダイナミックリンクライブラリについて

    Windows98でCドライブがほとんど満タンになり、少しいらないものを削除したいのですが、ダイナミックリンクライブラリが1381個もあり、削除したら空き容量が増えるので、削除しても問題ないのでしょうか。過去の回答を読むと消して良いようなものではなさそうな気もします。よろしくお願いします。