函数原型是
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文件添加到程序中了

解决方案 »

  1.   

    .LIB包含到工程中的话,只要引用了头文件,直接用应该就可以了.
      

  2.   

    你这个DLL是动态链接库还是COM?
      

  3.   

    include头文件
    直接调用函数就行了
      

  4.   

    是动态链接库。1楼说的 “直接用” 具体是怎么写???我会一般的dll中的函数调用。这种定义了指针。用指针来指向需要调用的库中的函数的这种类型我就不知道该怎么写了
      

  5.   

    添加lib文件及头文件,是不需要定义函数指针那样调用的。使用动态调用时才需要定义函数指针吧(loadlibrary)。
      

  6.   

    一样的了,指针是接口的指针吧?那就调接口的方法就好了.
    比如CAdt继承的接口是IAdt,ADT_854_initial是IAdt接口中的一个方法,
    那么使用时就如下使用就好了。
    int nRet = 0;
    IAdt->ADT_854_initial(&nRet);
      

  7.   

    写漏了...IAdt *pAdt = NULL;
    pAdt->ADT_854_initial(&nRet);如果是COM的DLL,那么就另外的方法了,不过也类似的.
    主要是要得到接口指针.
      

  8.   

    直接用是这意思:
    工程设置中包含lib,头文件中包含对应的头文件,然后就可以调用dll中的函数了。你说的指针应该是动态加载dll吧:
    先定义函数指针,声明要和你要调用dll中的函数声明相同,
    再用LoadLibrary加载dll获取到dll的句柄,
    然后用GetProAddress获取dll你想调用的函数地址
    不用了这个函数和dll后要FreeLibrary释放掉dll的句柄。 这就是动态加载。节省空间
      

  9.   

    dream238  这位大哥能不能给个qq。我都不知道该怎么问了。如果你有时间的话我把源程序发给你帮我看下。然后我才好继续请教