【问题标题】:Error when compiling the code, linker command failed?编译代码时出错,链接器命令失败?
【发布时间】:2016-09-02 12:16:49
【问题描述】:

我对 C++ 比较陌生,我正在使用 CLions。我正在尝试按如下方式运行此代码:

/*
 * File: Warmup.cpp
 * ----------------


#include <iostream>
#include <string>
#include "../lib/StanfordCPPLib/console.h"
#include "../lib/StanfordCPPLib/simpio.h"
using namespace std;

/* Constants */

const int HASH_SEED = 5381;               /* Starting point for first cycle */
const int HASH_MULTIPLIER = 33;           /* Multiplier for each cycle      */
const int HASH_MASK = unsigned(-1) >> 1;  /* All 1 bits except the sign     */

/* Function prototypes */

int hashCode(string key);

/* Main program to test the hash function */

int main() {
   string name = getLine("Please enter your name: John");
   int code = hashCode(name);
   cout << "The hash code for your name is " << code << "." << endl;
   return 0;
}

/*
 * Function: hash
 * Usage: int code = hashCode(key);
 * --------------------------------


int hashCode(string str) {
   unsigned hash = HASH_SEED;
   int nchars = str.length();
   for (int i = 0; i < nchars; i++) {
      hash = HASH_MULTIPLIER * hash + str[i];
   }
   return (hash & HASH_MASK);
}

但是,我收到以下错误:

[ 50%] 构建 CXX 对象 CMakeFiles/Warmup.dir/src/Warmup.cpp.o [100%] 链接 CXX 可执行文件预热 ld:找不到库 -llib/StanfordCPPLib clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)make[3]:* [Warmup] 错误 1 make[2]: [CMakeFiles/Warmup.dir/all] 错误 2 make[1]: [CMakeFiles/Warmup.dir/rule] 错误 2 make: * [Warmup] 错误 2

我知道这适用于 microsoft studio C++,但我不确定为什么它不适用于 CLions。有人介意在这里给一些建议吗?

任何帮助将不胜感激。

谢谢

编辑:这是我当前的 CMakeLists.txt 文件的样子:

cmake_minimum_required(VERSION 3.6)
project(0_Warmup)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(SOURCE_FILE src/Warmup.cpp)
link_libraries(lib/StanfordCPPLib)

add_executable(Warmup src/Warmup.cpp)

我在某处链接这个库时出错了吗?

【问题讨论】:

  • 您正在使用库lib/StanfordCPPLib,但找不到它。它在适当的文件夹中吗?
  • 链接器命令行的实际外观如何?您可以使用 -L&lt;path&gt; 选项添加用于查找库的路径。
  • @Hayt 在我的 CMakeLists.txt 文件中,我有 link_libraries(lib/StanfordCPPLib) 。我还将它保存在存储为 lib/StanfordCPPLib 的文件夹中,我将 lib 文件夹标记为库根目录,因为当我将 StanfordCPPLib 标记为库根目录时,编译器不允许我导入所需的头文件。
  • 你有没有 StanfordCPPLib.a 或 StanfordCPPLib.so 或 StanfordCPPLib.lib 之类的文件
  • @Hayt 感谢您的帮助!我已经能够解决问题并最终切换到 Visual Studios。因为在撰写本文时我还是 C++ 的初学者,所以我不知道该语言面临的许多编译器问题。尽管如此,我现在已经想通了。谢谢

标签: c++ cmake clion


【解决方案1】:

我想你在这个上面添加了 //

#include "../lib/StanfordCPPLib/console.h"
#include "../lib/StanfordCPPLib/simpio.h"// library and u shud try once again a right path of library folder ..

【讨论】:

  • 我认为这不能解决任何问题。问题似乎是 cmake / 链接器找不到所需的库。
猜你喜欢
  • 2015-03-08
  • 2015-11-28
  • 2014-02-12
  • 1970-01-01
  • 1970-01-01
  • 2012-09-14
  • 1970-01-01
  • 2014-02-15
  • 1970-01-01
相关资源
最近更新 更多