- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 Visual C++ for Linux plugin .我可以毫无问题地运行基本的 Hello world。我的实际项目使用了一个.lib
。它编译正常,但在链接过程中出现错误(这是从 Visual Studio 的输出 Pane 中复制的):
ClCompile:
Starting remote build
Compiling sources:
Invoking g++
g++ -c -x c++ /home/devbox/projects/LinuxProgServ/LinuxProgServ/main.cpp -I /home/devbox/projects/LinuxProgServ/include/libuv -I /home/devbox/projects/LinuxProgServ/../include/lubuntu -I "/home/devbox/projects/LinuxProgServ/../include/lubuntu/x86_64-linux-gnu" -g2 -gdwarf-2 -o "/home/devbox/projects/LinuxProgServ/obj/x64/Debug/main.o" -Wall -Wswitch -W"no-deprecated-declarations" -W"empty-body" -Wconversion -W"return-type" -Wparentheses -W"no-format" -Wuninitialized -W"unreachable-code" -W"unused-function" -W"unused-value" -W"unused-variable" -O0 -fno-strict-aliasing -fno-omit-frame-pointer -fthreadsafe-statics -fexceptions -frtti -std=c++11
main.cpp
Done compiling '/home/devbox/projects/LinuxProgServ/LinuxProgServ/main.cpp'
Link:
Linking objects
Invoking ld
g++ -o "/home/devbox/projects/LinuxProgServ/bin/x64/Debug/LinuxProgServ.out" -Wl,--no-undefined /home/devbox/projects/LinuxProgServ/obj/x64/Debug/main.o -llibuv.lib
/usr/bin/ld: cannot find -llibuv.lib
collect2: error: ld returned 1 exit status
libuv.lib 在 Project Properties>Linker>Input>Library Dependencies 中指定。我尝试了以下但没有成功:
我制作了相同的项目,但用于 Windows 只是为了确保它可以正常工作。
我错过了什么吗?显然,我可以自己运行命令或使用 *make 的任何变体,但这不是重点。
最佳答案
当您使用 -l
将库传递给 g++ 时,g++ 会在您提供的名称前加上 lib
前缀,然后使用 查找具有该名称的文件.so
或 .a
库搜索路径上的扩展名。按照惯例,共享库 (dll) 具有 .so
扩展名,静态库具有 .a
扩展名。
阻力最小的方法是使用 .a
扩展名构建您的库,即 libuv.a
然后将其作为 指定给 VCLinux 项目库依赖项>紫外线
。并使用 -L
指定库搜索路径,就像您在步骤 1 中所做的那样。
或者,您可以将库的完整路径放在 g++ 链接命令行中,不带
-l
前缀,即
/home/devbox/projects/lib/libuv .lib
和 g++ 将像使用其他目标文件一样使用它。通过
Linker/All Options/Additional Options
设置。
更新:经过反射(reflection),第二种方法行不通。尽管 g++ (gcc) 在使用其完全限定路径指定时将接受库作为输入,但库必须出现在程序目标文件之后,以便解析引用。不幸的是,在 VCLinux 中无法控制 Additional Options
的位置,这总是将它们放在 g++ 命令行参数列表的前面,即在目标文件之前。 :(
而且,冒着显而易见的风险,该库必须使用 g++ 在 Linux 上构建,并且在链接您的程序时位于 g++ 可见的路径上。
关于linux - 如何将 .lib 与 "Visual C++ for linux"插件一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44828517/
我是一名优秀的程序员,十分优秀!