2013-05-28 26 views
0

我正试图用C++ builder xe使用一些DLL通信来开发应用程序。 在DLL中我使用其在myClass实现的回调:在回调中更新数据

myClass.h

static void CALLBACK CallbackAsynchEvent(unsigned char* Data); 

myClass.cpp

void CALLBACK CallbackAsynchEvent(unsigned char* Data) 
{ 
// use Data to update a variable membre of myClass 
} 

当我尝试更新使用数据的myClass对象XXXX我获得: "E2451 Undefined symbol XXXX"

你能帮我找到问题吗?

+1

你应该发布一些更多的代码,但也许你正试图访问myClass的非静态成员,而你不能在静态函数中执行该成员? – stijn

+0

我认为这是问题所在。 我相信该解决方案将C++方法封装到C回调API中。 任何人都知道如何执行该操作? – user2427860

回答

1

我通过包装一个C++方法为C回调API想通了这个问题:

这里是为那些需要帮助的例子:

void myClass::vDoSomething(unsigned char* Data) 
{ 
    // work todo in the callback 
} 

void CALLBACK CallbackAsynchEvt(unsigned char* Data, void *ptT) 
{ 
    static_cast<myClass*>(ptT)->vDoSomthing(Data); 
} 

// the function membre of myClass where the Pointer is passed: 

Start(CallbackAsynchEvt, static_cast<void *>(this));