Click here to Skip to main content
15,904,503 members
Please Sign up or sign in to vote.
4.00/5 (1 vote)
See more: , +
I have a dll(xyz.dll).
In xyz.h,I have two functions given below
vc++
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
C++
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
C++
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
Updated 29-Jul-12 22:23pm
v3
Comments
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.

1 solution

I just have simplified your code. Apply following sample code logic to your project.

C#
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[^]
 
Share this answer
 

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



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900