在c ++中,如何将dll提取的数据发送到exe

时间:2017-04-01 07:03:55

标签: c++ dll

我是C ++的初学者,厌倦了从dll到exe的数据传输过程中遇到的错误。

问题: 我有一个exe,其中我捆绑了一个DLL ...现在exe想要启动dll从Active Directory获取一些数据..这是通过使用从exe到DLL的函数指针调用来执行的。现在,dll从中获取数据AD和每当它达到限制(100个数据)时,它应该去exe打印这个数据(只有我需要执行这个数据打印)...并且它应该再次返回到dll并继续获取数据, ,

如何将数据从dll传输到exe ... ???????????

仅供参考:我曾尝试使用Structure和一个exe和dll共同的类... 但内存清理过程崩溃我的程序,因为dll和exe的堆是不同的..我在dll中给出的数据试图在exe中清理...(这是一个不同的主题,这需要更多的解释。 ..并且为了不浪费你宝贵的时间,请帮助我用最简单的方法将数据从dll传输到exe)

由于我的组织限制,我无法发布我的计划。请给我一个更好的解决方案...

1 个答案:

答案 0 :(得分:0)

你可以在exe中分配一个内存块,将地址传递给dll,dll可以将数据填入内存,然后你可以在exe中释放缓冲区。

在您的dll中,您可以导出如下界面:

void fill_buffer( char * p_buff, int buff_size );

在你的exe中,你可以分配一个缓冲区并将它传递给dll,然后清理它:

char * the_buff = new char[1024];

while (...) {
    fill_buffer( the_buff, 1024 );

    //do something to the_buff
    print(the_buff)
}

delete []the_buff;

当你在dll和exe之间传递结构或类时,要小心字节对齐应该是一致的。

对于你的问题,也许你可以粘贴一些假代码,然后你的问题会更清楚。