繁体   English   中英

g++ 对 static 库的链接不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM