日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

由.def文件生成lib文件[转]

發布時間:2023/12/13 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 由.def文件生成lib文件[转] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? 最近在學習curl庫時,碰到一個問題,從官網上下載了一個lib版的,卻發現只有.dll,沒有lib文件,感覺很奇怪,google了之后才知道,原來庫作者的用意是讓用戶自己生成lib文件,下載到的lib文件中含有.def文件。唉,用了vs有幾個年頭了,卻連這么基礎的問題都不知道,編譯器是變得越來越智能了,只是讓我們變得越來越傻了。下邊我總結了一下由.def生成lib的方法。

? ? ? ? 在使用 VC 鏈接 dll 時,通常需要一個導入庫文件(.lib),但有時我們只有一個 dll 文件,怎么辦呢?

? ? ? ? 通常,在鏈接庫文件時,需要一個 (.lib)文件,lib 文件分為兩種:一種為靜態鏈接庫(Static Libary,以下簡稱“靜態庫”),另一種為動態連接庫(DLL,以下簡稱“動態庫”)的導入庫(Import Libary,以下簡稱“導入庫”)。VC 在鏈接 dll 時,需要根據導入庫(.lib)來定位 dll 中的符號位置。沒有這個文件,VC 鏈接器將不能正常鏈接。

?

解決此問題的辦法有三個:

  • 使用 DLL to Lib 工具,根據 dll 文件生成 lib 文件。
  • 使用 LoadLibrary 函數加載 dll 文件,再使用 GetProcAddress 來查找函數地址,根據得到的函數指針來進行調用。
  • 編寫模塊定義文件(.def),使用命令行生成 lib 文件。
  • ?

    以下重點介紹使用模塊定義文件來生成 lib 的方法。

    模塊定義文件是用來描述 dll 文件的文本格式的文件,其格式如下:

    LIBRARY libdll.dll      ;dll 文件的文件名
    DESCRIPTION "描述信息"  ;描述信息,此行可以不要
    EXPORTS
    lib_add @1        ;函數描述
    lib_sub @2        ;函數描述

    第一行:在 LIBRARY 后面填 dll 文件的名字,分號后面是注釋。

    第二行:DESCRIPTION,描述信息,此行可以忽略

    第三行:EXPORTS

    第四行開始,是 dll 文件中函數的描述,可以使用 dumpbin /EXPORTS libdll.dll 命令查看,(其中,libdll.dll 是目標 dll 的文件路徑)

    以上文件寫好后,保存成 libdll.def 文件,放在和 dll 文件相同的目錄。

    使用 lib /def:libdll.def 命令,可以生成 lib 文件。

    來源:?http://blog.csdn.net/windows_nt/article/details/9708101

    轉載于:https://www.cnblogs.com/tibetanmastiff/p/7053482.html

    總結

    以上是生活随笔為你收集整理的由.def文件生成lib文件[转]的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。