2009-02-23 67 views

回答

3

我认为最好的办法是提供围绕C++库的C包装。当我用C++进行编程时,这在10年或更早的时候非常流行,但我不知道它是否已经完成了。

基本上,对于每class C,对于每一个构造ctor暴露于创建extern "C" CPtr cCtor(....)方法,它返回一个不透明的指针CPtr和为每个函数func暴露创建extern "C" cFunc(CPtr,....)

另一种方法是创建一个CStruct它具有函数指针类型的成员变量,实现它们以调用类方法并让客户端完成所有艰苦的工作。

4

我不这么认为。使用名称修饰,以便每个重载函数具有与链接器查看的名称不同的名称。

你可以用C重写它们,并使用extern "C" {}构造,但你会失去所有漂亮的继承,多态等等。你也可以将C++封装在C函数中,只公开C函数。

2

我能想到的唯一方法是将函数声明为extern“C”。链接器需要名称修改来区分例如通过它们的参数列表来重载函数(如果不是用于名称修饰,则链接器将不可用)。

0

虚拟功能将是我认为的答案,你有没有注意到COM,创建一个实例,它给你一个指向该接口的指针表示为类。我猜这个声明的方法不是按名字解决的,而是按槽位索引解决的。