使用Eclipse CDT,我试图将单个库(.lib)文件链接到我的项目中。
在编译期间,由于文件路径中的空格字符,路径将在空间周围分割,导致无法找到文件,并阻止编译成功执行。此执行字符串由Eclipse生成。
g++ -static-libgcc -static-libstdc++ -o "Test.exe" "src\\Test.o" -lC:/Program Files/Java/jdk1.7.0_15/lib/jvm.lib
g++: error: Files/Java/jdk1.7.0_15/lib/jvm.lib: No such file or directory
总的来说,它无法构建用于编译的库选项:
-lC:/Program Files/Java/jdk1.7.0_15/lib/jvm.lib
我已尝试用引号括起路径并将路径的目录添加为库路径,但-l
选项在两种情况下都格式不正确。
如何在Eclipse CDT的路径中成功添加带空格的库?
答案 0 :(得分:2)
你应该把你的路径包含空格,并附上qoutes。
您可能应在 Libraries选项卡中仅指定库名称(即jvm
)。然后在库路径标签中指定"C:/Program Files/Java/jdk1.7.0_15/lib"
。
关键是"-lC:/Program Files/Java/jdk1.7.0_15/lib/jvm.lib"
是有效的选项形成,因为命令解释器会将其视为单个选项,但会删除引号。
因此,当您在cmd中键入g++ "-lC:/Program Files/Java/jdk1.7.0_15/lib/jvm.lib"
时,传递给g ++的参数将为-lC:/Program Files/Java/jdk1.7.0_15/lib/jvm.lib
而不带引号。
但是,-l<path-to-library-file>
本身的gcc
无效选项。你可以使用
g++ <path-to-library-file>
或g++ -L<path-to-library-dir> -l<library-name>
。
因此,有效选项将是
g++ <..> "src\\Test.o" "-LC:/Program Files/Java/jdk1.7.0_15/lib" -ljvm