在Windows 7上链接一个.lib文件

5
我有一个C++程序test.cpp,想要链接两个.lib文件(fhlib.lib和gc_lib.lib)。这些.lib文件与我的.cpp程序在同一个文件夹中。我正在使用Windows 7操作系统。
到目前为止,我尝试了以下方法:
g++ -o main main.cpp -L/Users\Documents\Visual Studio 2015\Projects\My Project -lfhlib

但我得到了一个

No such file or directory error.

我确定路径是正确的,因为我从“属性-位置”中复制了它。但是我不得不删除“C:\”,因为它无法编译。

编辑:我找到了这个http://www.mingw.org/wiki/Specify_the_libraries_for_the_linker_to_use

所以我尝试使用

"-I" instead of "-l"

但仍然不起作用。我得到:
undefined reference to 'fh_set'...

2
-I选项用于包含路径。 - rocambille
2个回答

9

如果你在Windows上使用g++编译,我猜你正在使用MinGW:MinGW依赖于.a库。当使用“-l”选项时,编译器会查找扩展名为.a的库文件。

以.lib格式的库是使用Visual Studio编译的:你不能将其用作此操作。如果有源代码,请使用MinGW编译您的库,或考虑将项目迁移到Visual Studio。


我已经在VS中有我的项目并且可以在那里执行。但是现在我想使用os.systems("g++ -o ...")从Python接口执行。没有办法我可以使用g++或gcc链接它们吗?你说的sources指的是什么,.dll文件吗? - lads
1
如果您的库使用纯C,可以通过传递.lib文件的路径来实现:g++ -o main main.cpp "C:/Users/Documents/Visual Studio 2015/Projects/My Project/fhlib.lib"(请注意,我在路径中使用引号是因为空格和'/'而不是'',以避免特殊字符被误解)。如果您的库使用C ++,则编译器之间不存在二进制兼容性,因此它不应该起作用。 - rocambille
不行,它不起作用。我得到了 undefined reference to 'fh_set' 的错误信息... 我能在 cake 文件中链接它们,然后执行 os.system("make") 吗? - lads
我该如何使用同一个编译器将它们全部编译? - lads
我没有源代码,只有.dll和.lib文件。 - lads
显示剩余2条评论

1
所以问题在于库文件是用VS编译的。我必须使用VS编译器而不是g ++,然后一切都正常了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接