函数原型是
int WINAPI ADT_854_initial_dll(void)
{
int ret = 0;
UCHAR m_data = 0x80; for(int i = 0; i < 8; i++)
{
if(CH341OpenDevice(i) != INVALID_HANDLE_VALUE)
{
ret++;
write_to_reg(i, &WR0H, &m_data);
}
} return ret;
}
然后他有个Interface
STDMETHODIMP CAdt::ADT_854_initial(int *pVal)
{
*pVal = ADT_854_initial_dll(); return S_OK;
}
头文件中这样写的
virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ADT_854_initial(
/* [retval][out] */ int __RPC_FAR *pVal) = 0;
然后具体的实现是
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ADT_854_initial )(
IAdt __RPC_FAR * This,
/* [retval][out] */ int __RPC_FAR *pVal);
我想问下我在程序中要调用这个函数我该怎么写???我已经将.lib文件添加到程序中了
int WINAPI ADT_854_initial_dll(void)
{
int ret = 0;
UCHAR m_data = 0x80; for(int i = 0; i < 8; i++)
{
if(CH341OpenDevice(i) != INVALID_HANDLE_VALUE)
{
ret++;
write_to_reg(i, &WR0H, &m_data);
}
} return ret;
}
然后他有个Interface
STDMETHODIMP CAdt::ADT_854_initial(int *pVal)
{
*pVal = ADT_854_initial_dll(); return S_OK;
}
头文件中这样写的
virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ADT_854_initial(
/* [retval][out] */ int __RPC_FAR *pVal) = 0;
然后具体的实现是
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *ADT_854_initial )(
IAdt __RPC_FAR * This,
/* [retval][out] */ int __RPC_FAR *pVal);
我想问下我在程序中要调用这个函数我该怎么写???我已经将.lib文件添加到程序中了
直接调用函数就行了
比如CAdt继承的接口是IAdt,ADT_854_initial是IAdt接口中的一个方法,
那么使用时就如下使用就好了。
int nRet = 0;
IAdt->ADT_854_initial(&nRet);
pAdt->ADT_854_initial(&nRet);如果是COM的DLL,那么就另外的方法了,不过也类似的.
主要是要得到接口指针.
工程设置中包含lib,头文件中包含对应的头文件,然后就可以调用dll中的函数了。你说的指针应该是动态加载dll吧:
先定义函数指针,声明要和你要调用dll中的函数声明相同,
再用LoadLibrary加载dll获取到dll的句柄,
然后用GetProAddress获取dll你想调用的函数地址
不用了这个函数和dll后要FreeLibrary释放掉dll的句柄。 这就是动态加载。节省空间