[英]g++ link against static library does not work
我有一个简单的文件 main.cpp 和 static 库 MyLib.lib,我正在尝试将程序与 static 库链接,如下所示:
g++ -o m main.cpp -static -L c:\lib\path -l MyLib
或像这样:
g++ -o m main.cpp -L c:\lib\path -Wl,-Bstatic -l MyLib -Wl,-Bdynamic
编译过程成功退出并且没有错误。 但是,当我尝试从命令行运行 m.exe 时,出现无法运行的错误,因为找不到 MyLib.dll。
我特别说它应该针对 static lib MyLib.lib 进行编译,那么它为什么要搜索动态库呢? 我在上面的命令中犯了错误吗?
看起来您确实与共享库链接。 您需要将包含 MyLib.dll 的文件夹的位置添加到 PATH。 在命令提示符中键入:
SET PATH=<dll_location>;%PATH%
m.exe
或确保 MyLib.dll 与 m.exe 位于同一文件夹中。
如果 gcc 只找到共享库,则 static 标志可能不起作用。
为什么你的库不叫 libMyLib.a? MyLib.lib 这个名字似乎暗示你是从 MSVC 预构建的。 如果是这样,你怎么知道 MyLib.lib 不是共享库?
有没有办法可以自己构建 MyLib 作为 static 库?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.