Click here to Skip to main content
13,086,266 members (66,165 online)
Rate this:
Please Sign up or sign in to vote.
See more: , +
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
    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); 
    void abc_t(int nPercentCompleted, void* const pUserData);
    DrmErrorCode_t abc(const FC3Encode_t hEncodeHandle, abc_t *const fpCallBack, void *const pUserData);
    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";
    Mabc_t fpabc_t=reinterpret_cast<Mabc_t>(plibrary->GetSymbol("abc_t"));
    Mabc fpabc=reinterpret_cast<Mabc>(plibrary->GetSymbol("abc"));
    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
Updated 29-Jul-12 22:23pm
Richard MacCutchan 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 30-Jul-12 4:36am
My (virtual) 5.
Richard MacCutchan 30-Jul-12 4:43am
Thanks, I owe you a (virtual) beer.
Member 7909353 30-Jul-12 5:16am
definition is in xyz.dll
Pablo Aliskevicius 30-Jul-12 10:50am
Include xyz.h in your client application.
Richard MacCutchan 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 31-Jul-12 0:25am
I have added.

1 solution

Rate this: bad
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[^]

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

  Print Answers RSS
Top Experts
Last 24hrsThis month

Advertise | Privacy |
Web03 | 2.8.170813.1 | Last Updated 31 Jul 2012
Copyright © CodeProject, 1999-2017
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