【发布时间】:2017-02-16 18:52:13
【问题描述】:
我知道有大量的帖子,但是浏览了很多帖子,我发现没有任何效果。
我想在我的 C++ 文件中包含一些 .h 和 .c 文件。
单击 CLion 中的方法会将我重定向到该 foo.h 文件,但最终它无法处理以下消息:
架构 x86_64 的未定义符号: “_fooFct”,引用自: _main 在 main.cpp.o ld:未找到架构 x86_64 的符号
foo.h
void fooFct();
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})
但我不想在 CMakeFiles.txt 中包含 C 文件。除了编辑 CMakeFiles 之外,还有其他方法吗?
【问题讨论】:
-
您的
CMakeLists.txt文件是什么样的?它是否在源列表中列出了foo.c? -
您正在声明 fooFct() 函数,但您没有在其定义中链接:后者应该在为 foo.c 创建的目标文件中,您是否也在链接它?
-
你的意思是
gcc -c Cfile.c、gcc -shared -o libCfile.so cFile.o、c++ -L/somehwere -Wall main.cpp -o main -lCfile?不,我想完全由 CLion 完成。还是不可能?