我是Windows和视觉工作室的新手。我必须编译用c ++编写的代码。它使用不同的库。我找到了这些库的dll文件。我可以没有任何问题编译源代码,但存在链接问题。我不知道如何链接DLL文件。我明白我需要.lib文件。但是所需的一些库没有提供任何lib文件。只有dll文件和dif文件。如何使用Visual Studio 2010 ultimate生成所需的lib文件?我找不到一个名为lib.exe的程序。谢谢。
答案 0 :(得分:15)
您确实需要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。如果提供,请按照供应商的说明进行操作。并且不要犹豫与他们联系以获得支持。
答案 1 :(得分:2)
这确实需要大量工作,并且通常更容易谷歌搜索您需要的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工具)
答案 2 :(得分:2)
如果您转到DLL的项目属性并检查链接器 - >;高级,有一个“导入库”条目。您可能必须将其设置为在构建DLL时生成lib文件,或者如果已经设置它,则应将其指向lib文件的位置。
如果你使用Visual Studio 2010构建整个项目,那么在项目的Common Properties'Reference部分中添加依赖库应该会自动触发必要的链接语句。
答案 3 :(得分:0)
如果您真的需要查找lib.exe,我有一个Python脚本,可以在任何用分号分隔的文件夹组中找到所需的内容。
class UserView(ModelView):
form_extra_fields = {
'password': CustomPasswordField('Password', validators=[InputRequired()])
}
在您的情况下,请按以下方式使用它(在VS Developer命令提示符中):
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 Developer Command Prompt中):
WHATEVER_YOU_CALL_IT.py lib.exe "%PATH%"