我正在使用 MinGW (4.8.0 dw2 posix) 编写一个 C++ 库。该库用于另一个使用另一个编译器(在本例中为 msvc)的 C++ 项目。
参考这个我正在重新设计我的 C++ 库。有两件事我不知道该怎么做:
- 我可以使用命名空间吗?
- 我注意到 MinGW 上的 time_t 是 32 位,而在 msvc 中是 64 位。我能做些什么?
1)
这是否破坏了 ABI:
// Window.h
// MYLIB_API defined as __declspec( dllexports )
// MYLIB_CALL defined as __stdcall
namespace mylib {
class Window {
public:
virtual void MYLIB_CALL destroy() = 0;
virtual void MYLIB_CALL setTitle(const char* title) = 0;
virtual const char* MYLIB_CALL getTitle() = 0;
void operator delete(void* p) {
if (p) {
Window* w = static_cast<Window*>(p);
w->destroy();
}
}
};
} // mylib
extern "C" MYLIB_API mylib::Window* MYLIB_CALL CreateWindow(const char* title);
2
我如何确定不同编译器的基本类型相同。例如,在这种情况下,在 MinGW 上time_t
定义为unsigned long
,在 msvc 上定义为 `__int64'。我能做些什么?