小编Mic*_*ran的帖子

如何在不需要stdc ++链接的情况下将C程序连接到C++库?

我试图将一些代码添加到需要使用C++库的更大的C项目中.

C++库提供了一个包装器,它使用标记为extern"C"的函数,可以访问库的功能

//Some C++ library
//mywrapper.h
#ifdef __cplusplus
extern "C" {
#endif

void wrapperFunction1( int width );
void wrapperFunction1( int height);
#ifdef __cplusplus
} // extern "C"
#endif
Run Code Online (Sandbox Code Playgroud)

这与g ++编译没有问题.

在制作C程序并包含mywrapper.h时,我不断得到引用vtable和cxa_pure_virtual的链接器错误:

undefined reference to `vtable for __cxxabiv1::__class_type_info'
undefined reference to `__cxa_pure_virtual'
Run Code Online (Sandbox Code Playgroud)

在测试中,这些错误消失了,并且在我添加stdc ++库时允许程序编译,但这不是大C项目的选项.有没有办法编译C程序来访问没有这些错误和没有stdc ++的C++库?并且错误的交易是指在C++库内部并且未在mywrapper.h中引用的模块,那么为什么C程序甚至试图引用它们呢?

c c++ linker

2
推荐指数
1
解决办法
2511
查看次数

标签 统计

c ×1

c++ ×1

linker ×1