2017-02-16 6 views
0

巨大な量の投稿があることは知っていますが、その多くを使っています。C ClionのC++にリンクしているコードが動作していない

いくつかの.hファイルと.cファイルをC++ファイルに含める必要があります。アーキテクチャx86_64のため

未定義のシンボル: 「_fooFct」から参照:それはそれがfoo.hファイルに私をリダイレクトしますが、最終的に、それは次のようなメッセージでの作業ではないですCLionでメソッドにクリック

main.cpp.oで _main LD:

void fooFct(); 
foo.hという記号(S)アーキテクチャx86_64の

が見つかりません

foo.cの

void fooFct(){ 
    /* do some stuff here */ 
} 

main.cppに

#include <iostream> 

extern "C" 
{ 
    #include "clibraryFolder/header/foo.h" 
} 

int main() { 
    fooFct(); 
    return 0; 
} 

CMakeLists.txt

cmake_minimum_required(VERSION 3.6) 
project(newcsample) 

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

set(SOURCE_FILES main.cpp) 
add_executable(newcsample ${SOURCE_FILES}) 

しかし、私はCファイルをインクルードする必要はありませんCMakeFiles.txtに保存します。これを行う別の方法は、CMakeFilesを編集する方法ですか?

+0

あなたの 'CMakeLists.txt'ファイルはどのように見えますか?ソースリストに 'foo.c'をリストしていますか? –

+0

あなたはfooFct()関数を宣言していますが、その定義にはリンクしていません。後者はfoo.cのために作成されたオブジェクトファイル内にあるはずです。 –

+0

あなたは 'gcc -c Cfile.c'、' gcc -shared -o libCfile.so cFile.o'、 'C++ -L/somehwere -Wall main.cpp -o main -lCfile'のようなものを意味していますか?いいえ、私はそれをCLionによって完全に手に入れたいと思っていました。それとも可能ではありませんか? – flyOWX

答えて

3

はあなたCMakeLists.txtファイル

cmake_minimum_required(VERSION 3.6) 
project(newcsample) 

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

set(SOURCE_FILES main.cpp foo.c) #all .cpp files and .c files here 
add_executable(newcsample ${SOURCE_FILES}) 

で以下の変更を行い、.hファイルがある場合の#include場合にのみ、現在のディレクトリを指定することができます。

関連する問題