小弟是C++刚入门的新手,最近在研究一个呼叫DLL的程式,
爬了文也google过,想了很久但还是有些地方不太了解。
希望各位大大给点意见.
程式码:
typedef void *DEV_HANDLE; //line 1
DEV_HANDLE WINAPI Device_xOpen(const int nDevIndex); //line 2
typedef DEV_HANDLE (WINAPI *LP_DevOpen)(const int nDevIndex,
const char *pDevName); // line 3
DEV_HANDLE m_hLink; // line 4
LP_DevOpen m_Open; // line 5
m_Open = (LP_DevOpen)::GetProcAddress(hDLL, "Device_xOpen"); // line 6
m_hLink = m_Open(0, ""); // line 7
if (m_hLink){ ......} // line 8
疑问:
1. DEV_HANDEL为指标型式,所以 line 2 的意思是函式Device_xOpen的回传值
是一个位址吗?
2. 如果"函式Device_xOpen的回传值是一个位址",
那为何line 7, line 8 看起来 m_hLink 是一个值?
3. Device_xOpen函式的输入值只有一个nDevIndex,
经过了line 3, line 6可以多出一个pDevName的原因是?
pDevName在原本的Device_xOpen没有,它代表的是什么呢?
4. 双冒号::是用在表示Class里的函式或是变量,
但line 6 中的(LP_DevOpen)::GetProcAddress双冒号的用意是?
5. 双冒号::另一问,程式码:
HINSTANCE hInst = ::LoadLibrary ( “HIDKey.dll” );
这里的双冒号的用意是?
C++真的比想像中的还有学问 >_<