关于windows:在C ++ DLL中导出哪些方法是安全的?

Which of these methods is safe to export in a C++ dll?

我正在创建一个DLL,供几个可执行文件使用。我已经读过在接口上使用STL类的危险性,我担心需要使用相同的编译器进行编译并在相同的运行时运行。

如果导入这些签名的可执行文件可能使用不同版本的VC++编译器和不同版本的Boost进行编译,那么声明我的方法的正确方法是哪种签名?

1
2
3
4
5
6
7
8
9
10
#include"boost/date_time/posix_time/posix_time_types.hpp"

boost::posix_time::ptime getTime();
void setTime(boost::posix_time::ptime time);

time_t getTime();
void setTime(time_t time);

MyCustomTime getTime(); // Defined just like time_t
void setTime(MyCustomTime time);

有没有更好的方法通过DLL接口传递日期和时间结构?


只需传递方便的内容,并记录所需的编译器/库。例如,不能保证不同的编译器具有相同的time_t,并且由于2038年unix 32位time_t的溢出,您可以期望在某个时刻切换到64位time_t。显然,这会破坏任何DLL接口。