【问题标题】:C++ Eclipse ld: library not found for -lC ++ Eclipse ld:找不到-l的库
【发布时间】:2013-09-09 23:13:13
【问题描述】:

我有一个主项目和一个库项目。当我尝试在 Eclipse 中构建时,我不断收到此错误:

make all 
Building file: ../src/hello/Hello.cpp
Invoking: GCC C++ Compiler
g++ -I"/Users/pdl/Development/HelloWorld/Namer/src/namer" 
-include"/Users/pdl/Development/HelloWorld/Namer/src/namer/World.h" -O0 -g3 -Wall -c 
-fmessage-length=0 -MMD -MP -MF"src/hello/Hello.d" -MT"src/hello/Hello.d" -o "src/hello/Hello.o" "../src/hello/Hello.cpp"
Finished building: ../src/hello/Hello.cpp

Building target: Hello
Invoking: MacOS X C++ Linker
g++ -L"/Users/pdl/Development/HelloWorld/Namer" -o "Hello"  ./src/hello/Hello.o 
-l"/Users/pdl/Development/HelloWorld/Namer/src/namer/World.h"
ld: library not found for -l/Users/pdl/Development/HelloWorld/Namer/src/namer/World.h
collect2: ld returned 1 exit status
make: *** [Hello] Error 1

我不想调试。我只是在尝试构建。

提前谢谢你。


这是我的代码:

Hello 是我的主要项目,Namer 是我的库。

在我的 Hello 项目中,我的文件夹结构如下: src -> 你好

Hello.cpp:

#include <stdio.h>
#include "World.h"

int main() {
  printf("Hello %s\n", getWorld().c_str());
  return 0;
}

CMakeLists.txt:

cmake_minimum_required(VERSION 2.8.6)
project(Hello)
find_package(Namer REQUIRED)
include_directories("${Namer_INCLUDE-DIRS}")
add_executable(hello main.cpp)
target_link_libraries(hello ${Namer_LIBRARIES})

FindNamer.cmake

find_path(Namer_INCLUDE_DIRS World.h /usr/include "$ENV{NAMER_ROOT}")

find_library(Namer_LIBRARIES namer /usr/lib "$ENV{NAMER_ROOT}")

set(Namer_FOUND TRUE)

if (NOT Namer_INCLUDE_DIRS)
    set(Namer_FOUND FALSE)
endif (NOT Namer_INCLUDE_DIRS)

if (NOT Namer_LIBRARIES)
    set(Namer_FOUND FALSE)
endif (NOT Namer_LIBRARIES)

在我的 Namer 项目中,我的文件夹结构如下: src -> 命名器

World.cpp:

#include "World.h"

std::string getWorld() { return "Earth"; }

int main() {
  printf("We are in Namer %s\n", getWorld().c_str());
  return 0;
}

World.h:

#include <string>

std::string getWorld();

CMakeLists.txt:

cmake_minimum_required(VERSION 2.8.6)
project(Namer)
include_directories("${CMAKE_SOURCE_DIR}")
add_library(namer World.cpp World.h)

【问题讨论】:

  • 您的 Makefile 似乎有问题。它正在尝试链接头文件。你能发布你的 Makefile 的内容吗?

标签: c++ eclipse g++ libraries


【解决方案1】:

您似乎正在构建“src/hello/Hello.o”,但搜索错误。 -l"/Users/pdl/Development/HelloWorld/Namer/src/namer/World.h" 应该是库而不是链接器命令中的标头。检查您的项目设置。

【讨论】:

  • 我认为你是对的,但我正在努力学习 CMake,这真的很难。所以我会发布代码。
猜你喜欢
  • 2012-08-19
  • 2015-10-22
  • 2014-12-27
  • 1970-01-01
  • 1970-01-01
  • 2013-05-18
  • 1970-01-01
  • 2015-11-03
  • 2015-08-16
相关资源
最近更新 更多