相关疑难解决方法(0)

CMake-在静态库中包括依赖项

我对C ++和所有相关术语和工具链非常陌生。我正在尝试建立一个静态库,客户可以在自己的项目中使用。理想情况下,除了.a和.lib文件,再加上.h文件外,我什么也不想发送。

现在,我的CMake文件如下所示:

project(ava-engine-client)
cmake_minimum_required(VERSION 3.9.6)
set(CMAKE_BUILD_TYPE Release)
set(CMAKE_FIND_LIBRARY_SUFFIXES .a )

add_compile_options(-std=c++11)

# GRPC and Protocol Buffers libraries location
list(APPEND CMAKE_PREFIX_PATH "/opt/grpc" "/opt/protobuf")

# CMake find modules
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")


# Recurse and find all the generated Protobuf .cc files
file(GLOB_RECURSE PROTO_GEN_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/ava_engine/ava/*.cc)

include_directories("${CMAKE_CURRENT_SOURCE_DIR}")

# Building the library
add_library(ava_engine_client STATIC src/AvaEngineClient.cc src/AvaEngineClient.h ${PROTO_GEN_SRCS})

target_link_libraries(ava_engine_client ${PROTOBUF_LIBRARIES} ${GRPC_LIBRARY})


## Building Playground
add_executable(playground src/Playground.cc)

target_link_libraries(playground ava_engine_client)
Run Code Online (Sandbox Code Playgroud)

现在,这在链接阶段失败了,因为我没有使用ava_engine_client库中的依赖项链接游乐场目标:

Undefined symbols for architecture x86_64:
  "grpc::ClientContext::ClientContext()", referenced from:
      ...
  "grpc::ClientContext::~ClientContext()", referenced from:
      ...
  "grpc::CreateChannel(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> …
Run Code Online (Sandbox Code Playgroud)

c++ cmake

5
推荐指数
1
解决办法
2120
查看次数

C++ Hello World体系结构x86_64的未定义符号:

应该是直截了当的,但是当我编译C++ Hello World代码时,会返回一堆未定义的符号错误.

// my first program in C++
#include <iostream>
using namespace std;

int main ()
{
  cout << "Hello World!";
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

下面是我如何编译:打开终端,cd到目录,gcc hello.cpp

然后我得到了错误.有什么想法吗?我觉得我可能已经打破了某些......或者我只是遗漏了一些非常明显的东西.任何帮助是极大的赞赏!

继承人的错误:

Undefined symbols for architecture x86_64:
"std::cout", referenced from:
      _main in ccfUAf5i.o
  "std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)", referenced from:
      _main in ccfUAf5i.o
  "std::ios_base::Init::Init()", referenced from:
      __static_initialization_and_destruction_0(int, int)in ccfUAf5i.o
  "std::ios_base::Init::~Init()", referenced from:
      ___tcf_0 in ccfUAf5i.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

c++ undefined

3
推荐指数
1
解决办法
2884
查看次数

标签 统计

c++ ×2

cmake ×1

undefined ×1