Click here to Skip to main content
Sign Up to vote bad
good
See more: VS2008MFCVC++
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:57
Edited 29 Jul '12 - 22:23

Comments
Richard MacCutchan - 30 Jul '12 - 4:25
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 - 30 Jul '12 - 4:36
My (virtual) 5.
Richard MacCutchan - 30 Jul '12 - 4:43
Thanks, I owe you a (virtual) beer.
Member 7909353 - 30 Jul '12 - 5:16
definition is in xyz.dll
Pablo Aliskevicius - 30 Jul '12 - 10:50
Include xyz.h in your client application.
Richard MacCutchan - 31 Jul '12 - 12:36
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 - 31 Jul '12 - 0:25
I have added.

1 solution

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)

  Print Answers RSS
Your Filters
Interested
Ignored
     
0 OriginalGriff 333
1 Sergey Alexandrovich Kryukov 140
2 Mohammed Hameed 123
3 Santhosh G_ 113
4 Ron Beyer 74
0 Sergey Alexandrovich Kryukov 8,266
1 OriginalGriff 6,516
2 CPallini 3,533
3 Rohan Leuva 2,703
4 Maciej Los 2,234


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