C++ C++;POSIX OO跨平台库,可跨语言和编译器使用

C++ C++;POSIX OO跨平台库,可跨语言和编译器使用,c++,windows,visual-c++,cygwin,integrity,C++,Windows,Visual C++,Cygwin,Integrity,这是我在这里的第一个问题,所以我为任何错误道歉,并将尽可能具体。 我们需要开发一个C++ PosixOO跨平台库,用于跨语言和编译器使用。由于我们需要能够在不同的操作系统上使用这个库,例如Windows、Linux和Android,以及在一些嵌入式操作系统(如Integrity)上,我们决定在Cygwin或Mingw下开发它。库本身将是一个C++面向对象的代码,POSIX标准。正如我已经提到的,我们需要能够跨不同语言加载和使用这个库。因此,为了能够从托管代码使用这个库,我们考虑先用非托管MS V

这是我在这里的第一个问题,所以我为任何错误道歉,并将尽可能具体。 我们需要开发一个C++ PosixOO跨平台库,用于跨语言和编译器使用。由于我们需要能够在不同的操作系统上使用这个库,例如Windows、Linux和Android,以及在一些嵌入式操作系统(如Integrity)上,我们决定在Cygwin或Mingw下开发它。库本身将是一个C++面向对象的代码,POSIX标准。正如我已经提到的,我们需要能够跨不同语言加载和使用这个库。因此,为了能够从托管代码使用这个库,我们考虑先用非托管MS VisualC++代码包装它。在这里,我们将面临一系列广泛的问题。Visual C++使用不同的编译器,因此,几乎不可能链接CygWin/MIW下编译的C++ OO库。主要问题是名称混乱,随之而来的是不同的结构对齐问题、底层异常和内存模型的冲突。 另一种选择是拥有相同的代码,但用不同的编译器编译,例如CygWin和MS VisualC++。这个选项的问题是VisualC++编译器不支持POSIX .< 那么,有没有人遇到过同样的问题?有没有关于如何开发这样一个库或者至少为不同的编译器重用代码的想法


对此,我们非常感谢,谢谢。

< P>解决方案是提供C++类的“扁平化”C包装(这个概念在很大程度上是从Rudy Velthuis那里借用的:请参阅)。要展平类,请为每个类成员函数以及构造函数和析构函数创建一个C函数。构造函数的C包装器返回指向该类对象的指针。其他成员函数(包括析构函数)的包装器将此指针作为其第一个参数。这些C包装必须有外部的“C”声明由DLL导出,并提供对C++对象的间接访问(这里有更多的细节)。因此,对于外部的单词,这样的DLL看起来就像是用C编写的DLL,而用C编写的DLL与各种来源的EXE非常好地工作。

你必须从源编译,C++世界中没有通用的二进制兼容性。对于不同的平台,您需要特定于平台的代码。研究现有的框架,如Qt。谢谢HyDE,我继续寻找可能的解决方案,而且您绝对正确,在C++世界中没有二进制兼容性。我熟悉Qt框架,但不幸的是我们不能使用它。