【发布时间】: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<path>选项添加用于查找库的路径。 -
@Hayt 在我的 CMakeLists.txt 文件中,我有
link_libraries(lib/StanfordCPPLib)。我还将它保存在存储为 lib/StanfordCPPLib 的文件夹中,我将 lib 文件夹标记为库根目录,因为当我将 StanfordCPPLib 标记为库根目录时,编译器不允许我导入所需的头文件。 -
你有没有 StanfordCPPLib.a 或 StanfordCPPLib.so 或 StanfordCPPLib.lib 之类的文件
-
@Hayt 感谢您的帮助!我已经能够解决问题并最终切换到 Visual Studios。因为在撰写本文时我还是 C++ 的初学者,所以我不知道该语言面临的许多编译器问题。尽管如此,我现在已经想通了。谢谢