Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ EclipseCDT-将单个库与文件路径中的空间链接_C++_Eclipse_G++_Eclipse Cdt - Fatal编程技术网

C++ EclipseCDT-将单个库与文件路径中的空间链接

C++ EclipseCDT-将单个库与文件路径中的空间链接,c++,eclipse,g++,eclipse-cdt,C++,Eclipse,G++,Eclipse Cdt,使用EclipseCDT,我试图将单个库(.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_1

使用EclipseCDT,我试图将单个库(.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中?

  • 你应该用qoutes把有空格的路径围起来

  • 您可能应该在“库”选项卡上只指定库名称(即
    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
    对于
    gcc
    本身是无效的选项。你可以使用
    g++
    g++-L-L

    因此,有效的选择是

    g++ <..> "src\\Test.o" "-LC:/Program Files/Java/jdk1.7.0_15/lib" -ljvm
    
    g++“src\\Test.o”“-LC:/Program Files/Java/jdk1.7.0_15/lib”-ljvm
    
    如果在GUI中用引号括住路径会发生什么?@Lol4t0它形成了一个选项,将
    -l
    连同文件路径一起括在引号中,这不是一个有效的选项形式。使用这些精确的选项,
    jvm
    库没有链接(错误消息与其引用的代码相关)。我还尝试传递了
    -ljvm.lib
    ,但这也导致了一个错误:
    找不到-ljvm.lib
    @Vulcan,如果它没有责怪
    找不到
    ,那么它就被链接了。但可能是库不包含您需要的符号,或者可能是它使用了不同的ABI。您可以使用
    objdump-t
    interest学习符号表;Eclipse可以识别符号引用,并且在源代码中没有显示错误,因此必需的符号肯定存在。然而,在
    jvm.dll
    上运行
    objdump
    时,我遇到了无数的错误,“无法识别文件格式”和“已识别但未处理的机器类型”。看起来它使用了不同的ABI?结果是g++只支持32位的
    jvm.lib
    ,所以我更改了文件路径以链接该库。谢谢您的帮助。@Vulcan否则,如果您有所有库的64位版本,您可以使用64位目标mingw。你可以得到它