【发布时间】:2011-08-21 14:06:43
【问题描述】:
我正在尝试为诸如 win32、mac os、linux、iOs 等平台创建一个抽象层。 我希望这是动态链接的。在不支持此功能的平台上,这应该不是问题,因为据我所知,可以编译为动态库的所有内容都可以编译为静态库,并且对代码的影响最小。
现在,进入正题:
我创建了一个名为 IThread 的接口和一个名为 CThread 的类。我使用了一个名为 CreateThread 的函数,该函数用 extern "C" 定义,以便能够导出它并在库外调用它。这里的问题是,例如在 win32 中已经有一个名为 CreateThread 的函数,因此我得到一个链接器错误。我了解错误及其出现的原因,但我不确定避免这种情况的好方法。我不太喜欢使用奇怪的命名,因为 qt 使用 CreateQtThread。
我的另一个想法是创建一个创建 CThread 实例的线程管理器/工厂,但我不确定这是否是个好主意。
你们怎么看这件事?我之所以这么问,是因为我不想急于解决此类重要的组织问题。
非常感谢
【问题讨论】:
-
您的问题是什么?您了解错误并且不想重命名您的函数,所以您想知道我们对此有何看法?
-
是的,如果可能的话,我希望有更多经验的人就此发表意见。谢谢。
-
您希望您的抽象层仅用于 C++ 还是其他语言(例如 C)?您是想从给定的 C++ 编译器中使用它(如果需要更改编译器,则重新编译抽象层)还是 oyu 需要“编译一次适用于每个 C++ 编译器”?
标签: c++ winapi dll naming extern