[英]lib.exe, Visual Studio, generating .lib files from dll's and def files
我是 Windows 和 Visual Studio 的新手。 我必須編譯用 C++ 編寫的代碼。 它使用不同的庫。 我找到了這些庫的 dll 文件。 我可以毫無問題地編譯源代碼,但存在鏈接問題。 我不知道如何鏈接 dll 文件。 我知道我需要 .lib 文件。 但是一些所需的庫沒有提供任何 lib 文件。 只有dll文件和dif文件。 如何使用 Visual Studio 2010 Ultimate 生成所需的 lib 文件? 我找不到名為 lib.exe 的程序。 謝謝你。
您確實需要 lib.exe 將 .def 文件轉換為鏈接器需要的 .lib 文件。 存放在visual studio目錄的vc\\bin目錄下,默認為C:\\Program Files\\Microsoft Visual Studio 10.0\\VC\\bin\\lib.exe。 最簡單的方法是使用“Visual Studio 命令提示符”,您可以在“開始”菜單、Microsoft Visual Studio 2010、Visual Studio 工具中找到它。
接下來,使用 /def:foo.def 選項運行 lib.exe 以生成 .lib。 如果提供,請遵循供應商的說明。 不要猶豫,聯系他們尋求支持。
這確實需要大量的工作,通常更容易為您需要的 DLL 搜索源代碼和/或庫,因為使用相同的編譯器編譯庫和程序是個好主意(使部署更容易,所以你不依賴於多個 vc 運行時)。
您可以使用本指南創建 .lib 文件: http : //support.microsoft.com/kb/131313
這是一個需要時間和大量調試的過程(取決於dll的大小以及dll接口的復雜性)
根據您的平台,位置通常是:
Windows 7 32 位與 32 位 VS2010:
C:\\Program Files\\Microsoft Visual Studio 10.0\\VC\\bin\\
Windows 7 64 位與 64 位 VS2010:
C:\\Program Files\\Microsoft Visual Studio 10.0\\VC\\bin`
Windows 7 64 位與 32 位 VS2010:
C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\bin\\
但是,如果您啟動 Visual Studio 命令提示符,它應該在您的路徑中。 (在開始菜單上的 Visual Studio 工具下查看)
如果您轉到 DLL 的項目屬性並檢查鏈接器 -> 高級,則會有一個“導入庫”條目。 您可能需要設置它以在構建 DLL 時生成一個 lib 文件,或者如果它已經設置,它應該將您指向 lib 文件的位置。
也就是說,如果您使用 Visual Studio 2010 構建整個項目,在項目的公共屬性的參考部分中添加依賴庫應該會自動觸發必要的鏈接語句。
如果您真的需要查找 lib.exe,我有一個 Python 腳本,可以在任何以分號分隔的文件夾組中查找您想要的任何內容。
import sys
import os
def select(a, b):
d = []
for c in a:
d.append(b(c))
return d
def multicheck(filename, folders_SEMICOLONSEPARATED):
folders = folders_SEMICOLONSEPARATED.split(";")
print("RESULTS:")
k = True
for f in folders:
try:
if filename.lower() in select(os.listdir(f), lambda k: k.lower()):
k = False
print(" " + os.path.join(f, filename))
except:
pass
if k:
print(" NONE")
if __name__ == "__main__":
multicheck(sys.argv[1], sys.argv[2])
在您的情況下,像這樣使用它(在 VS 開發人員命令提示符中):
WHATEVER_YOU_CALL_IT.py lib.exe "%PATH%"
如果您不想找到它,只需像這樣使用它(在 VS Developer Command Prompt 中):
LIB [options] [files]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.