如何用c语言调用c++做成的动态链接库

如题所述

因为c++的各种复杂机制,生成的动态链接库中的符号名是不符合C的机制的,直接链接会失败,一般解决c和c++的链接问题是在c++的代码上进行处理的,只要将你的cpp文件中的函数定义都加上extern "c"前缀,就可以编译成C可链接的库。如果你只有cpp的库文件,没有源码文件的话,没法处理。


// a.cpp
extern "C" int cpp_func() { return 0; }

// b.c
#include <stdio.h>
int cpp_func();

int main() {
    printf("%d\n", cpp_func());
    return 0;
}

// ***compile and link***
// g++ a.cpp -o a.o
// gcc b.c -o b.o
// g++ a.o b.o -o a.out && ./a.out

温馨提示:答案为网友推荐,仅供参考
相似回答