Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: VS2008 MFC VC++
I have a dll(xyz.dll).
In xyz.h,I have two functions given below
typedef void DRMAPI  abc_t (int nPercentCompleted, void *const pUserData)
 
ErrorCode_t DRMAPI abc (const FC3Encode_t hEncodeHandle,abc_t *const fpCallBack, void *const pUserData)
 

I want to create application in vc++ with mfc.
My appliction header file code is
class MatchDynamicLibrary
{
private:
    typedef void (DRMAPI *Mabc_t)(int nPercentCompleted, void* const pUserData);
    typedef DrmErrorCode_t (DRMAPI *Mabc)(const FC3Encode_t hEncodeHandle, abc_t *const fpCallBack, void *const pUserData); 
 
public:
    void abc_t(int nPercentCompleted, void* const pUserData);
    DrmErrorCode_t abc(const FC3Encode_t hEncodeHandle, abc_t *const fpCallBack, void *const pUserData);
 
public:
    Mabc_t    m_fpabc_t;
    Mabc      m_fpabc; 
};
vc++ code file is
void MatchDynamicLibrary::Initialize()
{
    using std::swap;
    //
    PDynLib plibrary(new Drm::CXDynamicLibrary);
    #ifdef WIN32
    const char* szName="xyz.dll";
    #endif
 
    plibrary->Load(szName);
    
    Mabc_t fpabc_t=reinterpret_cast<Mabc_t>(plibrary->GetSymbol("abc_t"));
    Mabc fpabc=reinterpret_cast<Mabc>(plibrary->GetSymbol("abc"));
    swap(m_plib,plibrary);
    
    m_fpabc_t_t = fpabc_t;
    m_fpabc = fpabc;
    
}
 
DrmErrorCode_t MatchDynamicLibrary::abc(const FC3Encode_t hEncodeHandle, abc_t *const fpCallBack, void *const pUserData)
{
    return m_fpabc(hEncodeHandle, fpCallBack, pUserData);
}
 
DrmErrorCode_t MatchDynamicLibrary::abc_t(int nPercentCompleted, void *const pUserData)
{
    m_fpabc_t(nPercentCompleted, pUserData);
}

 
When I run , it gives error
error C206 1: syntax error : identifier 'abc_t'
error C2065: 'fpCallBack' : undelared identifier
error C2065: 'pUserData' : undelared identifier
Posted 29-Jul-12 21:57pm
Edited 29-Jul-12 22:23pm
v3
Comments
Richard MacCutchan at 30-Jul-12 4:25am
   
You do not have a definition of abc_t which is used in the first typedef. In future please show the exact line that the error message refers to.
CPallini at 30-Jul-12 4:36am
   
My (virtual) 5.
Richard MacCutchan at 30-Jul-12 4:43am
   
Thanks, I owe you a (virtual) beer.
Member 7909353 at 30-Jul-12 5:16am
   
definition is in xyz.dll
Pablo Aliskevicius at 30-Jul-12 10:50am
   
Include xyz.h in your client application.
Richard MacCutchan at 31-Jul-12 12:36pm
   
Well that is not the right place. As you can see the compiler cannot find the definition, so you need to provide it, either by including the correct header or by editing your own code.
Member 7909353 at 31-Jul-12 0:25am
   
I have added.

1 solution

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

I just have simplified your code. Apply following sample code logic to your project.
 
typedef void (*abc_t) (int nPercentCompleted, void *const pUserData);
void abc (const int hEncodeHandle,const abc_t fpCallBack, void *const pUserData);
 

For more details refer to
How to interpret complex C/C++ declarations / Function Pointers[^]
  Permalink  

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



Advertise | Privacy | Mobile
Web02 | 2.8.141022.2 | Last Updated 31 Jul 2012
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100