我可以在C程序中使用C++库吗?

use*_*514 3 c c++ vector

我正在用C编写程序,但我想使用像向量一样的动态库.是否可以在C程序中使用C++库?

Joh*_*ica 11

std::vector,不.任何模板化的东西都是正确的.

一般来说,使用C++代码并不好玩,但可以做到.您必须将类包装在C代码可以调用的普通非类函数中,因为C不会执行类.要使这些函数可以从C中使用,然后使用extern "C"声明来包装它们,以告诉C++编译器不要进行名称修改.

然后,您可以使用C++编译器编译包装器函数,并创建一个C程序可以链接的库.这是一个非常简单的例子:

// cout.cpp - Compile this with a C++ compiler
#include <iostream>

extern "C" {
    void print_cout(const char *str) {
        std::cout << str << std::endl;
    }
}

/* print.c - Compile this with a C compiler */
void print_cout(const char *);

int main(void) {
    print_cout("hello world!");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

  • 然后你需要将c ++库链接到我假设的应用程序.例如,通过使用g ++而不是gcc进行最终链接.我认为这是显而易见的. (2认同)