C ++ Pass struct& DLL边界

时间:2016-10-19 14:33:01

标签: c++ dll struct

在Kernel.dll中,定义了struct&函数指针:

struct Data // blahblah
void (*Callback)(const Data & data);

在Tool.dll中,有一个util函数:

void GetData(Callback callback)
{
    // create a thread with "ThreadProc()" method, and pass the callback in
}

void ThreadProc()
{
    Data data;
    // fill the struct
    if (callback) callback(data); // this "callback" is the callback func ptr passed to "GetData()" func above.
}

在main.exe中,有真正的逻辑:

void OnData(const Data & data)
{
    // do something
}

int main()
{
    GetData(&OnData);
}

一切运行良好,但随后#34;堆已损坏"。

即使我删除了" OnData"中的所有代码。处理程序,腐败仍然存在。但如果我没有通过任何回调函数(nullptr),腐败就会消失。似乎传递给DLL的函数正在触发问题。

" DLL边界"的神奇之处是什么?这些天我听到了很多关于这些事情的消息。什么技术导致这种神奇的边界"?什么样的事情需要特别注意?

0 个答案:

没有答案