DLL中的函數是最常用的函數,D2D1CreateFactory(D2D1_FACTORY_TYPE,REFIID,D2D1_FACTORY_OPTIONS*,void**) function
。如果你在偷看的d2d1.h
裏面的聲明,你會看到,該函數聲明,而其他重載是在頭球攻門稍稍內聯函數用於通過一般的函數調用:
#ifndef D2D_USE_C_DEFINITIONS
inline
HRESULT
D2D1CreateFactory(
__in D2D1_FACTORY_TYPE factoryType,
__in REFIID riid,
__out void **factory
)
{
return
D2D1CreateFactory(
factoryType,
riid,
NULL,
factory);
}
template<class Factory>
HRESULT
D2D1CreateFactory(
__in D2D1_FACTORY_TYPE factoryType,
__out Factory **factory
)
{
return
D2D1CreateFactory(
factoryType,
__uuidof(Factory),
reinterpret_cast<void **>(factory));
}
template<class Factory>
HRESULT
D2D1CreateFactory(
__in D2D1_FACTORY_TYPE factoryType,
__in CONST D2D1_FACTORY_OPTIONS &factoryOptions,
__out Factory **ppFactory
)
{
return
D2D1CreateFactory(
factoryType,
__uuidof(Factory),
&factoryOptions,
reinterpret_cast<void **>(ppFactory));
}
#endif // #ifndef D2D_USE_C_DEFINITIONS
DLL功能是通過名字引出/只有序號,沒有任何參數信息。因此,DLL不能導出具有相同名稱的重載函數。編譯器將不得不裝飾導出的名稱以使它們唯一。當使用'GetProcAddress()'時,你必須指定那些特定的裝飾名稱,而不是通用名稱被重載。 –