私は比較的新しい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%] Building CXX object CMakeFiles/Warmup.dir/src/Warmup.cpp.o [100%] Linking CXX executable Warmup ld: library not found for -llib/StanfordCPPLib clang: error: linker command failed with exit code 1 (use -v to see invocation) make[3]: * [Warmup] Error 1 make[2]: [CMakeFiles/Warmup.dir/all] Error 2 make[1]: [CMakeFiles/Warmup.dir/rule] Error 2 make: * [Warmup] Error 2
私は、これは、マイクロソフトのスタジオ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)
私はどこかに、このライブラリをリンクエラーがいるのでしょうか?
の上に追加さだと思います。それは適切なフォルダにありますか? – Hayt
リンカのコマンドラインは実際どのように見えますか? '-L'オプションを使ってライブラリを検索するためのpathesを追加することができます。 –
@Hayt私のCMakeLists.txtファイルには、 'link_libraries(lib/StanfordCPPLib)'があります。私はまた、lib/StanfordCPPLibとしてフォルダに保存しています。そこでは、ライブラリルートとしてStanfordCPPLibをマークするだけでコンパイラは必要なヘッダファイルをインポートできないため、libフォルダをライブラリルートとしてマークしました。 – PutsandCalls