小编Pie*_*e I的帖子

在具有不兼容代码的C ++代码中使用C库

我想在C ++代码中使用C库,而无需对其进行修改。

该库包含与c ++不兼容的代码片段,例如:

  • C ++关键字newdelete
  • _Atomic 宾语
  • 错误的声明

我将C库编译为.so。而且我还在另一个C代码上使用了它,并且效果很好(实际上,我想制作此代码的C ++版本)。

我的CMakeLists:

# Specify the minimum CMAKE version required
cmake_minimum_required(VERSION 2.8)

# Project name
project(myproject)

# Header files
set(HEADERS myCpp.h)

# Source files
set(SOURCES myCpp.cpp)
add_executable(myproject myCpp.cpp myCpp.h)

# Link libraries
LINK_DIRECTORIES(/usr/lib/libfrr.so)
target_link_libraries(${PROJECT_NAME}  frr)


set_target_properties(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE C)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11" )
set(CMAKE_CXX_FLAGS "-fpermissive")
Run Code Online (Sandbox Code Playgroud)

我的标题开头为:

extern "C"{
        #include "lib/libfrr.h"
}
Run Code Online (Sandbox Code Playgroud)

我有很多错误。一点汇编:

/lib/module.h:88:3: error: expected primary-expression before '.' token
   .r.info = &_frrmod_info,        

/lib/thread.h:123:2: error: '_Atomic' does …
Run Code Online (Sandbox Code Playgroud)

c c++ cross-language

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

标签 统计

c ×1

c++ ×1

cross-language ×1