在C++dll中导出以下哪种方法是安全的

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

本文关键字:方法 安全 C++dll      更新时间:2023-10-16

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

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

#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接口。