libo-client.a(mysocket.o):(.rodata._ZTV7mStream[vtable for mStream]+0x10): undefined reference to `__cxa_pure_virtual'
...
mysocket.cpp:(.text+0x15ad): undefined reference to `operator new[](unsigned long)'
mysocket.cpp:(.text+0x15c1): undefined reference to `operator delete(void*)'
mysocket.cpp:(.text+0x167a): undefined reference to `__cxa_allocate_exception'
mysocket.cpp:(.text+0x16a6): undefined reference to `__cxa_throw'
...
我的编译/链接行看起来像这样:
gcc $(CFLAGS) $(INCLUDES) test2.c libo-client.a -o test2
这里的 test2 是我的测试框架。
当我使用 g++ 时,不会出现这个问题。然而,我要将这个库接口到使用 gcc 编译的 C 项目中。如何解决这个问题?它的原因是什么?
编辑:
即使我没有使用标准的 C++ 库,它也需要一些像 operator new/delete 等东西,内部也有异常。
我正在将这个东西链接到 Xen hypervisor 上,所以我不确定我有什么其他选择,除了彻底重写这个东西或尝试使用 G++ 编译 Xen?